Alors imaginez ce scénario, j'ai une liste et il y a un peu de pagination, quand l'utilisateur clique sur suivant, le lien est piraté par jQuery, il utilise la fonction $.ajax
(dont J'ai fourni ci-dessous) pour aller chercher le contenu de la page suivante et les afficher dans le conteneur d'origine. Cela inclut les liens de pagination ainsi que nous voulons les mettre à jour aussi.jQuery, le contenu AJAXed perdre son bind
Le premier changement de page fonctionne très bien, mais à ce stade nous avons perdu la liaison entre notre élément de lien et notre règle jQuery:
$('#paging a').click(function(event) {
event.preventDefault();
getElementContents('#target_container','',$(this).attr('href'),false);
// arguements are (target element, data (for $ajax), url (for $ajax), highlight)
});
Quelles options dois-je maintenir la liaison entre l'événement et la fonction?
Pour référence, voici ma fonction wrapper pour $.ajax
:
var ajax_count = 0;
function getElementContents(target,data,url,highlight) {
if(url==null) {
url='/';
}
if(data==null) {
var data=new Array();
}
if(highlight==null || highlight==true) {
highlight=true;
} else {
highlight=false;
}
$.ajax({
url: url,
data: data,
beforeSend: function() {
/* if this is the first ajax call, block the screen */
if(++ajax_count==1) {
$.blockUI({message:'Loading data, please wait'});
}
},
success: function(responseText) {
/* we want to perform different methods of assignment depending on the element type */
if($(target).is("input")) {
$(target).val(responseText);
} else {
$(target).html(responseText);
}
/* fire change, fire highlight effect... only id highlight==true */
if(highlight==true) {
$(target).trigger("change").effect("highlight",{},2000)
}
},
complete: function() {
/* if all ajax requests have completed, unblock screen */
if(--ajax_count==0) {
$.unblockUI();
}
},
cache: false,
dataType: "html"
});
}
Merci! :-)
EDIT
hmmm, juste trouvé this question ... :-) recherche en elle
Cheers mec! Besoin d'améliorer mes compétences de recherche, voici la solution que j'ai implémentée :-) –
Méthode .live() déjà supprimée sur la version 1.9 de jQuery, à la place elle recommande d'utiliser la méthode .on()! –
mis à jour post pour jQuery 1.9 – derek