0

イベントでjqueryを使用する以下のコードがあります

    $(document).on('click', 'a.test', function (event) {
        alert('');
    });

私の問題は、これが ajax を介して動的に追加されたコンテンツに対して発火しないことです:

$.ajax({
    url: ...,
    ...
    ..
    success: function(response) {

        var dom = $(response.d.html);
        myContainer.html(dom.find('#ajaxcontainer'));
    }
});

これを修正するのを手伝ってもらえますか? jquery.1.7.2.min.js を使用しています

4

2 に答える 2

1

奇妙なことに問題はありません...その .on('click') イベントで関数のように ajax を呼び出す必要があるかもしれません。

jsFiddle リンク

var myContainer = $('body');

$(document).on('click', 'a', function () {
  $.ajax({
    url: '#',
    success: function(response) {
        // of course here i'm appending just a regular link, but your response data would include all that html
        myContainer.append('<a class="ajaxAdded">Click this</a>');

    }
  });
});

</p>

于 2012-07-24T17:53:04.873 に答える
0

何が起こるかというと、$.ajaxそれは非同期関数であるため、onメソッドが作成するコンテンツにアクセスできないということです。おそらくそのコンテンツはまだ準備ができていないため、イベントを発生させるための ajax リクエストを既に完了していることを確認する必要があります。それを確認するには、次のようにします。

var done = false;
$.ajax({ /*bla bla bla*/ }).done(function(){ done = true; });

if(done){/* now you can fire the event */ }
于 2012-07-24T17:58:26.960 に答える