jQuery - etwas tun, nachdem ein Element über Ajax geladen wird, aber nicht in der Ajax-Funktion

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

  •  27-09-2019
  •  | 
  •  

Frage

Ich versuche, für ein Element zur Last auf der Seite von einem Ajax-Aufruf zu beobachten. Ich habe keinen Zugriff auf die Jquery, die den Ajax-Aufruf bewegen. Also, wenn einige neue html auf die Seite geladen ist, würde Ich mag einige Änderungen an, sie anzuwenden.

Ich versuche derzeit die .load () Funktion zu verwenden:

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

Was nicht etwas zu tun ist. Ich habe sogar versucht zu machen, dass ein Live-Bindung, die nicht wirklich Sinn macht, aber ich dachte, ich würde es zu versuchen.

Der Wähler ist richtig.

Irgendwelche Ideen?

War es hilfreich?

Lösung 5

konnte ich Zugriff auf den ursprünglichen Ajax-Aufruf erhalten, so dass diese Frage strittig ist jetzt. Ich lasse es für andere bis zu finden, aber falls einer dieser Antworten hilft ihnen.

Andere Tipps

.load () Funktion erwartet eine URL, auf die die AJAX Anforderung zu senden, holen die Daten von dem Server und aktualisieren des gegebenen Elements in dem Wähler. So benötigen Sie eine URL übergeben:

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

Sie wissen, was die inital Ajax ruft? wenn dies der Fall könnten Sie eine Funktion aufrufen, das gleiche Ereignis verwenden. Obwohl dies könnte zu Verwirrung führen, wenn Sie etwas ändern sind versuchen, dass die Ajax-Laden ist.

Ente Stanzen könnte die Antwort sein:

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

Wenn Sie .load nennen, ist es verbindlich, dass die Event-Handler Elementen, die Wähler zu der Zeit entsprechen sind Sie es nennen. Da das Element danach hinzugefügt wird, wird es nie gebunden. Das .live Funktion löst dieses Problem durch die Bindung an currrent und Zukunft -Elemente passend einen Selektor. Ich denke, was Sie wollen so etwas wie diese (nicht getestet):

$( '.autosuggest_keyword' ).live('load', 
    function()
    { 
        $( this ).val( 'load test' );
    }
);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top