jQuery- ajax関数ではありませんが、要素がajaxを介してロードされた後に何かをします

StackOverflow https://stackoverflow.com/questions/3460858

  •  27-09-2019
  •  | 
  •  

質問

Ajaxコールからページにロードする要素を監視しようとしています。 ajaxの呼び出しを行うjqueryにアクセスできません。したがって、いくつかの新しいHTMLがページにロードされたら、いくつかの変更を適用したいと思います。

現在、.load()関数を使用しようとしています。

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

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

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

何か案は?

役に立ちましたか?

解決 5

元のAjaxコールにアクセスすることができたので、この質問は今や議論の余地があります。しかし、これらの答えの1つが彼らを助けた場合に備えて、私はそれを他の人に見つけるためにそれを残しています。

他のヒント

。ロード() 関数は、AJAX要求を送信し、サーバーからデータを取得し、セレクターの指定された要素を更新するURLを期待します。したがって、URLを渡す必要があります。

$('.autosuggest_keyword').load('/foo');

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

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

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);
    }
});

.loadを呼び出すと、そのイベントハンドラーが、電話をかけているときにセレクターに一致する要素にバインドしています。その後、要素が追加されるため、拘束されることはありません。 。住む 関数は、Currrentに結合することによりこの問題を解決します そして未来 セレクターに一致する要素。あなたが望むのはこのようなものだと思います(テストされていない):

$( '.autosuggest_keyword' ).live('load', 
    function()
    { 
        $( this ).val( 'load test' );
    }
);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top