2

マークアップ:

<ul>
<li><a href="#" class="item-list" data-id="1">Link 1</a></li>
<li><a href="#" class="item-list" data-id="2">Link 2</a></li>
<li><a href="#" class="item-list" data-id="3">Link 3</a></li>
</ul>

JQueryでは、リンク1を選択すると、link1のデータIDを取得できるはずです。私は試した

$('.item-list').click(function(){
 var link = $(this);
 alert($(this).data('id'));
});

結果はありません。

おー。リストは、ページがロードされた後に生成されます。リストを取得するためにDBにクエリを実行しています。また、ユーザーがdBをフィルター処理する方法に応じて、リストを変更することもできます。

ありがとう。

4

3 に答える 3

4

ページの読み込み後にリストが生成された場合、.clickバインディングが機能しない可能性があります。たぶん、あなたは.liveそのように試すことができます:

$('.item-list').live('click', function(){
   var link = $(this);
   alert($(this).data('id'));
});

編集:

私がいつも忘れているように見えること:)jQuery1.7の時点で、.live()非推奨になっています。.on()次のように使用する必要があります。

 $("body").on("click",".item-list",function(){
    var link = $(this);
    alert($(this).data('id'));
});
于 2012-06-13T08:19:18.523 に答える
2

liveは非推奨であるため、.onを使用し、コードを内部に配置しますdocument.ready()

$(function(){  //short form of document.ready        
    $("body").on("click",".item-list",function(){
        var link = $(this);
        alert($(this).data('id'));
    });
});
于 2012-06-13T08:19:30.040 に答える
0
$('ul').on('click', '.item-list', function() {
  var link = $(this);
  alert(link.attr('data-id'));
});

それが機能するかどうかを確認します

于 2012-06-13T08:21:39.193 に答える