0

私はこのjQueryコードを持っています:

$('a.manage-content-link').click(function (e) {
    var self = $(this),
        file = self.siblings('input[name="block-type"]').val();
    file = file.substring(file.length - 3);
    self.next(".manage-content-wrap").find(".manage-content").load("file-" + file + ".php?key=" + self.siblings('input[name="key"]').val());
    e.preventDefault();
});

しかし、コードはクリックされると「ロード」するだけだと思います。2番目、3番目などのクリックが発生した場合、コードがファイルをリロードするのがわかりません。クリックイベントが発生するたびにjQueryをリロードさせる方法は?ありがとう!

4

1 に答える 1

1

ページをロードするたびにリンク要素が置き換えられていると思われます(つまり、ロードされたコンテンツの一部です)。この場合、要素を置き換えると、まったく同じIDであっても、それにバインドされているイベントは失われます。これを克服するには、コードの実行時に存在しない将来の要素を考慮してハンドラーを委任します。

jQuery Docs FAQ 「AJAXリクエスト後にイベントが機能しなくなるのはなぜですか?」を参照してください。

$(document).on('click','a.manage-content-link',function (e) {
   /* your code*/
})

要素が置き換えられていない場合、問題は他の場所にあります(キャッシュ、バグなど)。ブラウザコンソールを使用して、AJAXリクエストが行われているかどうかを確認する必要があります。

ハンドラー(またはアラート)に簡単なロギング関数を追加すると、クリックイベントも実行されているかどうかがわかります

于 2012-10-27T09:59:21.747 に答える