Je pose cette question dans un contexte Drupal, mais la réponse peut être générique et ne pas dépendre spécifiquement de Drupal.
J'ai des éléments HTML qui obtiennentmis à jour / remplacé via jQuery / ajax. Lors du chargement de la première page, les éléments sont correctement traités par jQuery. Cependant, les liens inclus dans les données renvoyées après un appel ajax sont ignorés par jQuery.
// 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;
});
}
Réponses:
0 pour la réponse № 1Dans ce cas, il y avait deux erreurs stupides.
Guest271314 a signalé la première: il y avait une variable non déclarée dans le code original que j'ai posté. J'ai modifié la question en conséquence.
Deuxièmement, mon sélecteur jQuery était faux et excluait les éléments destinés à être inclus. La fixation du sélecteur a résolu le problème.