1

ajax 呼び出しから要素がページに読み込まれるのを監視しようとしています。ajax 呼び出しを行っている jquery にアクセスできません。そのため、新しい html がページに読み込まれたときに、いくつかの変更を適用したいと考えています。

私は現在 .load() 関数を使用しようとしています:

$( '.autosuggest_keyword' ).load( 
    function()
    { 
        $( this ).val( 'load test' );
    }
);

これは何もしていません。それをライブバインディングにしてみましたが、あまり意味がありませんが、試してみようと思いました。

セレクターは正しいです。

何か案は?

4

5 に答える 5

0

アヒルのパンチが答えかもしれません:

should('duck-punch ajax success handler', function() {
    var origAjax = $.ajax;

    $.ajax = function(settings) {
        if(settings.url === 'the/request/page') {
            var origSuccess = settings.success;
            settings.success = function(responseHTML) {
                origSuccess.call(this, responseHTML);
                //apply some changes to html
            }

        }
        origAjax.call(this, settings);
    }
});
于 2010-08-11T20:00:35.670 に答える
0

最初の ajax を何と呼んでいるか知っていますか? その場合、同じイベントを使用して関数を呼び出すことができます。ただし、ajax がロードしているものを変更しようとすると、混乱が生じる可能性があります。

于 2010-08-11T17:13:10.653 に答える
0

.load()関数は、AJAX リクエストの送信先のURL を想定し、サーバーからデータを取得して、セレクター内の特定の要素を更新します。したがって、URL を渡す必要があります。

$('.autosuggest_keyword').load('/foo');
于 2010-08-11T17:02:25.073 に答える
0

元の ajax 呼び出しにアクセスできたので、この質問は今では意味がありません。ただし、これらの回答のいずれかが役立つ場合に備えて、他の人が見つけられるように残しています。

于 2010-08-22T21:18:18.553 に答える
0

.load を呼び出すと、呼び出し時にセレクターに一致する要素にそのイベント ハンドラーがバインドされます。要素はその後に追加されるため、バインドされることはありません。.live関数は、セレクターに一致する現在および将来の要素にバインドすることで、この問題を解決します。あなたが望むのは次のようなものだと思います(テストされていません):

$( '.autosuggest_keyword' ).live('load', 
    function()
    { 
        $( this ).val( 'load test' );
    }
);
于 2010-08-11T21:05:08.050 に答える