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 № 1In 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.