/ / Wie werden jQuery-ify-Elemente vom Ajax-Aufruf zurückgegeben? - Jquery, Ajax, Drupal-6

Wie werden jQuery-ify-Elemente vom Ajax-Aufruf zurückgegeben? - Jquery, Ajax, Drupal-6

Ich stelle diese Frage in einem Drupal-Kontext, aber die Antwort kann generisch sein und nicht spezifisch von Drupal abhängen.

Ich habe einige HTML-Elemente, die bekommenaktualisiert / ersetzt durch jQuery / ajax. Beim Laden der ersten Seite werden die Elemente ordnungsgemäß von jQuery verarbeitet. Die in den nach einem AJAX-Aufruf zurückgegebenen Daten enthaltenen Verknüpfungen werden jedoch von jQuery ignoriert.

// This standard function ensures that elements are properly processed after first page load:
Drupal.behaviors.events = function(context) {

// This works as intended. Clicking on links works as intended:
$(".event_browse_location .parent_locations a:not(.events-processed)", context).addClass("events-processed")
.bind("click", function() {
$.get(Drupal.settings.basePath + "/events/location/" + parseInt(this.id, 10), null, browseLocation);
return false;
});
}

var browseLocation = function(response) {
var result = Drupal.parseJson(response);
// New elements are properly added to the DOM here:
$(".event_browse_location").html(result.data);

// However, this does not seem to have any effect.
// The a elements in the new elements do not work as intended.
// jQuery does not process them at all.
$(".event_browse_location .parent_locations a:not(.events-processed)").addClass("events-processed")
.bind("click", function() {
$.get(Drupal.settings.basePath + "/events/location/" + parseInt(this.id, 10), null, browseLocation);
return false;
});
}

Antworten:

0 für die Antwort № 1

In diesem Fall gab es zwei dumme Fehler.

Auf die erste wurde von guest271314 hingewiesen: Es gab eine nicht deklarierte Variable im ursprünglichen Code, den ich gepostet habe. Ich habe die Frage entsprechend geändert.

Zweitens war mein jQuery-Selektor falsch und enthielt Elemente, die eigentlich enthalten sein sollten. Das Reparieren des Selektors behob das Problem.