0

Pjax の小さな例: http://indapublic.ru/pjax/

関数ハンドラは、「リンクのテスト」をクリックしてイベントを設定し、Javascript コンソールで「ハンドラ」を出力します。

function handler() {
    console.log('handler');
    // console.log($('#testLink'));

    $('#testLink').click(function(event) {
        event.preventDefault();
        console.log('click');
    })
}

関数ハンドラはpjax:success pjax:popstateイベントで実行されます。

$(document).on('pjax:success pjax:popstate', function() {
    handler();
});

ロード後、直接または Pjax で「リンクのテスト」をクリックしてみてください。Javascriptコンソールに「クリック」を出力します。ただし、「戻る」ボタンで戻ると、関数ハンドラーは実行されますが、「リンクのテスト」をクリックしても機能しません。

なんで?

4

1 に答える 1

1

イベント委任を使用してみてください。これはハンドラー メソッドから除外してください。

$(function(){
    $('body').on('click', '#testLink', function(event) {
            event.preventDefault();
            console.log('click');
    })
});
于 2013-03-20T04:00:04.390 に答える