0

次の tbody id を持つテーブルがあります: table_tbody jquery でクリック可能な 2 番目の td を使用して 10 行を追加しようとしています。1 つの変数を作成しました。elementこれは、s<tr>が含まれる行です。<td>

これはコードの一部です。

for (var ind = 0; ind < 10; ++ind) {
   var elem = element.clone();
   elem.children().next().first().attr("id", "table_td" + ind.toString());
   $("#table_td" + ind.toString()).click({playerID: 0}, playerFunc);
   $('#table_tbody').append(elem);
}

ご覧のとおり、各行の秒に一意の ID を設定していますtd。次に、クリックイベントに接続しています。ただし、クリックした後、クリックイベントが発生しません。エラーは表示されません。

私はそれを間違ってやっていますか?

編集: JSFiddle へのリンク

4

5 に答える 5

3

命令シーケンスを少し台無しにしました;)

$("#table_td" + ind.toString())

要素を DOM ツリーで探しますが、まだ追加していないため見つかりません。最初に要素を追加する必要があります。その後、イベント リスナーを追加できます。これはうまくいくはずです:

for (var ind = 0; ind < 10; ++ind) {
  var elem = element.clone();
  elem.children().next().first().attr("id", "table_td" + ind.toString());
  $('#table_tbody').append(elem);
  $("#table_td" + ind.toString()).click({playerID: 0}, playerFunc);
}
于 2013-06-23T08:54:45.180 に答える
3

classの代わりに使用するのが理想的な方法ですid

for (var ind = 0; ind < 10; ++ind) {
   var elem = element.clone();
   elem.children().next().first().attr("class", "table_td");       
   $('#table_tbody').append(elem);
}

$(document).on('click', '.table_td', function(){
    playerFunc();
});

これを見てください:http://jsfiddle.net/JSWorld/ahzzK/6/

于 2013-06-23T09:16:47.717 に答える
2

これを参照してください:

playerFunc が for で定義されていませんでした。

function playerFunc (){
    alert("hren" + this.playerID);
}
于 2013-06-23T09:09:02.833 に答える
1

単に地球上で最初にあったのは何かという質問..卵と鶏肉

for (var ind = 0; ind < 10; ++ind) {
  var elem = element.clone();
  elem.children().next().first().attr("id", "table_td" + ind.toString());
  $('#table_tbody').append(elem);
  $("#table_td" + ind.toString()).click({playerID: 0}, playerFunc);
}
于 2013-06-23T08:55:51.277 に答える
1

.toString()実際に文字列に追加する必要はありません動的に生成された要素の委任でメソッドを "string"+ num
使用します. Guy 内にハンドラーを作成する必要はありませんセレクター を使用して 2 番目の要素ごとにターゲットを設定します..on()
clickfor
:odd

http://jsfiddle.net/ahzzK/4/

$(document).ready(function() {

    var playerFunc = function() { // Function scope!
        alert("hren");
    }


    var element = $("<tr>")
              .append( $("<td />", {"text":"bla1"}) )
              .append( $("<td />", {"text":"bla2"}) );

    for (var i=0; i<10; i++) {
       var elem = element.clone();
       elem.children().next().first().attr("id", "table_td"+ i );
       $('#table_tbody').append(elem);
    }

    $("#table_tbody").on('click', 'td:odd', playerFunc );

});
于 2013-06-23T08:57:19.470 に答える