2017-12-11 10 views
-1

これは私のコードです。 jQueryを使用してクリックイベントに名前とURLを渡すにはどうすればよいですか?foreachでクリックイベントのデータを渡す

<?php foreach ($call_array ['events'] as $data) { ?> 
    <div class="card"> 
    <div class="card-header"> 
     <?php echo '<h2 class="card-title">'. $data ['name']['text'] .'</h2>'; ?> 
    </div> 
    <div class="card-footer"> 
     <a href="<?php echo $data['event_url'];?>" role="button">Go Now</a> 
    </div> 
    </div> 
<?php } ?> 

答えて

1

あなたのdiv要素内のデータを保持するために属性を使用することができます。

$(".card").on("click", function(e) { 
    $(this).attr("data-url"); //contains url of card clicked 
    $(this).attr("data-name"); //contains name of card clicked 
}); 
+0

感謝ニコラス:

<div class="card" data-name="<?php echo $data['name'];?>" data-url="<?php echo $data['event_url'];?>"> <div class="card-header"> <?php echo '<h2 class="card-title">'. $data ['name']['text'] .'</h2>'; ?> </div> <div class="card-footer"> <a href="<?php echo $data['event_url'];?>" role="button">Go Now</a> </div> </div> 

そしてそれはjQueryを使って、このようにアクセスします。申し訳ありませんが、私はそれを正しく説明しませんでした。私はAPIからデータをフェッチして、PHPのforeachループで実行してカードのリストを生成します。誰かがカードをクリックすると、別のプロセスを実行するためにそのカード情報が必要になります。 –

+0

私はあなたの問題に対する可能な解決策で私の答えを編集しました。 –

0

clickイベントに値を渡す代わりに、イベントハンドラ内のDOMから値を読み取ることができます。このような何か:

$('.card a').click(function(e) { 
 
    e.preventDefault(); 
 
    var name = $(this).closest('.card').find('.card-title').text(); 
 
    var url = $(this).attr('href'); 
 
    
 
    console.log(name, url); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="card"> 
 
    <div class="card-header"> 
 
    <h2 class="card-title">Name A</h2> 
 
    </div> 
 
    <div class="card-footer"> 
 
    <a href="#event-url1" role="button">Go Now</a> 
 
    </div> 
 
</div> 
 
<div class="card"> 
 
    <div class="card-header"> 
 
    <h2 class="card-title">Name B</h2> 
 
    </div> 
 
    <div class="card-footer"> 
 
    <a href="#event-url2" role="button">Go Now</a> 
 
    </div> 
 
</div>

関連する問題