0

次のコードを試して、配列からテーブルを描画し、行から属性 ID を取得しました。どんな提案でも大歓迎です。

$(document).ready(function(){

$.get('php/php.php', function(data){
    $.each(data, function(index, value){
    $('table').append(
        "<tr id='someid'>"
            +"<td>"+value.ticker+"</td>"
            +"<td>"+value.bid+"</td>"
        +"</tr>");
    }); 
}, "json");

$('tr').click(function(){
var id = $(this).attr("id");
alert(id);

}) 

}); 
4

3 に答える 3

3

非同期コールバックで構築されているため、まだ存在しない要素にクリック イベントをバインドしています。を使用する代わりに、 をclick使用してonください。onテーブルは動的に構築されないため、ハンドラーをそれにアタッチできます。

$('table').on('click', 'tr', function () {
    ...
});

http://api.jquery.com/on/

また、<tr>すべて同じ ID を持つ複数の を生成しています。これは有効なマークアップではありません。

于 2012-07-30T12:58:20.097 に答える
2

新しいコンテンツを DOM に動的に挿入しているため、制限したクリック イベントは認識されません。そのため、クリック イベントは機能しません。

解決策:jQueryを使用on

$(document).on("click","tr",function(){
  var id = $(this).attr("id");
  alert(id);
}) 

このメソッドは、jQuery 1.7 以降のバージョンから使用できます。古いバージョンを使用している場合は、デリゲートの使用を検討してください。

jQuery 1.7 以降、.live()&.delegate()メソッドは廃止されました。メソッドを使用しますon

于 2012-07-30T12:55:48.910 に答える
0

すべて問題ありませんが、tr クリック イベントの最後にセミコロンがありません。

$('tr').click(function(){
    var id = $(this).attr("id");
    alert(id);
});

これにより、tri id が一意である場合、tr の id が警告されます

構文エラーで jquery コードの実行が許可されないことを確認してください。

于 2012-07-30T13:01:57.517 に答える