0

私は次のようなjqueryコードを作成しました:

$('button').click(function(event) {

});

初期化; データをphpファイルに入れ$.postて送信し、テーブルの行を返します。すべての行に、「追加」ボタンがあります。

次に、これらのボタン用に次のような別のjqueryコードを作成しました。

$('.row_button').click(function(event) {

});  

繰り返しになりますが、私は$.postその行に関するデータを配置して送信しようとし、ajaxリクエストを介して情報を取得したいと考えました。しかし、それはうまくいきませんでした。何も起こらなかった。コードを調べましたが、エラーはありません。

別のajax内でajaxを使用することはできませんか?または別の方法はありますか?ありがとうございました。

4

2 に答える 2

7

これは、新しく挿入された要素が、既に持っているクリックイベントバインディングを認識していないためです。

解決策:関数でjqueryを使用します。

変化する

$('.row_button').click(function(event) {

});

$(document).on("click",".row_button'",function(event) {

});

jQueryonは、現在および将来の要素ajaxjavascriptを使用して/動的に新しい要素を追加することで新しく挿入された要素)に対して機能します。jQuery1.7以降のバージョンから利用できます。以前のバージョンのjQueryを使用している場合は、jqueryの使用を検討してlive ください(jQuery 1.7以降、.live()メソッドは非推奨になりました)

于 2012-07-27T14:02:50.267 に答える
3

代わりに2番目のコードを使用してみてください。

$('.row_button').live('click',function(event) {
  ...
});  

Jquery .liveは、現在および将来の現在のセレクターに一致するすべての要素のイベントハンドラーをアタッチします。


編集

.liveは廃止されたため、 .oninstedを使用します。

$(document).on("click",".row_button'",function(event) {

});

Jqueryのドキュメントから:

$(selector).live(events, data, handler);                // jQuery 1.3+
$(document).delegate(selector, events, data, handler);  // jQuery 1.4.3+
$(document).on(events, selector, data, handler);        // jQuery 1.7+
于 2012-07-27T14:02:33.830 に答える