1
$("#img-switcher").on("switchImageEvent", function(event, triggerID){
    $(this).attr('src',triggerID);
});
$("#page-container").on("click", "img.img-switcher", function() {
    var newSRC = $(this).attr('src');
    $("#img-switcher").trigger("switchImageEvent", [newSRC]);
});

このコードは、PJAXでは機能していないようです。最初にページをロードすると、要素が適切に選択され、変更が加えられます。ただし、PJAXを使用して別のページに移動するとすぐに、.on( "click")アクションの要素が選択されなくなります。私は何か間違ったことをしていますか?以前にアラートを追加してvar newSRC、.on()で要素が適切に選択されているかどうかを確認しようとしましたが、そうではありません。何か案は?

4

1 に答える 1

2

コンテキストから引き出されたこのビットのコードがあるので、デリゲートとして使用するのはなく、ライブとして使用しようとしていると思います。

問題になる可能性のあるイベントがアタッチされていない要素をロードするためにxhrを使用するpjaxを使用します。

したがって、リロードされていない親要素を使用して、それにイベントをアタッチすることをお勧めします。このように、本体の代わりに、リロードされていない最上位の要素を使用します。

$("body").on("switchImage", "#img-switcher", function(e, src){
  $(this).attr({ 'src': src });
});

$("body").on("click", "img.img-switcher", function() {
    $("#img-switcher").trigger("switchImage", $(this).attr('src'));
});
于 2012-10-16T16:50:23.660 に答える