0

ユーザーが行を追加および削除できるテーブルを作成しました。これらの行に入力された情報を使用して計算できるようにしたいのですが、この情報はページに動的に追加されているため、アクセスできないようです。

ここに私の追加機能と削除機能があります:

$("a.deleteRow").live('click', function (){
    $(this).parent().parent().remove();
});

$("a.addRow").live('click', function (){
    $("table.moneyTable tr:last").prev('tr').before("<tr>[Long row formatting]</tr>");
});

選択ボックスに依存するさまざまなテキスト入力ボックスなど、ページに他の動的コンテンツがいくつかありますが、これらにもすべてアクセスできる必要があります。ただし、彼らは私の jQuery に応答していません。考え?

4

2 に答える 2

4

さて...現在のバージョンの jQuery での委任は.on()関数で実行されます。イベントを静的な親オブジェクトにデリゲートします。document以下で使用されるように。

$(document).on('click', 'a.deleteRow', function(){
  $(this).parent().parent().remove();
});

$(document).on('click', 'a.addRow', function(){
  $("table.moneyTable tr:last").prev('tr').before("<tr>[Long row formatting]</tr>");
});
于 2012-08-20T01:33:27.027 に答える
2

これを試してください:1.7 ..上記

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

さらにその理由を知りたい場合: jQuery ライブ メソッドの何が問題なのですか?

delegateら。アル。jqueryバインディングイベントを動的にロードされたhtml要素に

<script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js'></script>

それがあなたの原因に合っていることを願っています。:)また、別の良いバージョンが以下の投稿で言及されてdocumentいないため、ここでは更新しません!

$("a.deleteRow").on('click', function (){
    $(this).parent().parent().remove();
});

$("a.addRow").on('click', function (){
    $("table.moneyTable tr:last").prev('tr').before("<tr>[Long row formatting]</tr>");
});
于 2012-08-20T01:33:05.657 に答える