2
$(document).ready(function(){
    var links = $('body').find('a.internal');

    links.on('click', function(e){
        //pull page with ajax and replace the content with this response

        //replace current links, as some are added from ajax response
        links = $('body').find('a.internal');

        e.preventDefault();
    })
});

ドキュメントの準備ができたときに呼び出されたのは1 つだけだったのでlinks.on()、作成される可能性のある新しいリンクで「更新」されることは決してなかったと思います。ajax 呼び出し後にこのバインダーをリセットするにはどうすればよいですか?

迅速な返答に感謝致します。それはトリックをしました!

4

4 に答える 4

5

あなたはこれを求めている:

$('body').on('click', 'a.internal', function(e){
    //pull page with ajax and replace the content with this response

    //replace current links, as some are added from ajax response
    links = $('body').find('a.internal');

    e.preventDefault();
})

これにより、クリック イベントが本文に添付され、a.internal でフィルター処理されます。これは、新しいリンクがページに追加された場合に機能します。

于 2013-10-10T18:42:16.187 に答える
1

これを行うためのより良い方法は、バインディングを本体にアタッチし、オプションのセレクター パラメーターを使用することです。

$(document).ready(function(){  
    $('body').on('click', 'a.internal', function(e){
        //pull page with ajax and replace the content with this response

        //replace current links, as some are added from ajax response
        links = $('body').find('a.internal');

        e.preventDefault();
    })
});
于 2013-10-10T18:43:35.217 に答える
0

このhttp://api.jquery.com/live/は、現在および将来、現在のセレクターに一致するすべての要素を処理します

于 2013-10-10T18:44:54.263 に答える
0

rojocaの答えはそれを行う正しい方法ですが、これは本当にあなたが求めたものです:

function ajaxDone() {
    $('a.internal').unbind('click').bind('click', function(e){
        e.preventDefault();
    });
}
于 2013-10-10T18:50:14.133 に答える