J'utilise donc le sélecteur de date jQuery, et cela fonctionne bien. J'utilise AJAX pour aller chercher du contenu, évidemment quand ce nouveau contenu est appliqué, la liaison est perdue, j'ai learnt about this last week et découvert à propos de la méthode .live()
. Mais comment l'appliquer à mon sélecteur de date? Parce que ce n'est pas un événement, donc .live()
ne sera pas en mesure d'aider ... non?Le sélecteur de date jQuery n'est pas persistant après AJAX
C'est le code que je utilise pour lier le sélecteur de date à mon entrée:
$(".datefield").datepicker({showAnim:'fadeIn',dateFormat:'dd/mm/yy',changeMonth:true,changeYear:true});
Je ne veux pas appeler ce métho chaque fois que mes feux AJAX, comme je veux garder ce aussi générique que possible.
Vive :-)
EDIT
Comme demandé @ Nick, ci-dessous est ma fonction d'emballage a la méthode ajax()
:
var ajax_count = 0;
function getElementContents(options) {
if(options.type===null) {
options.type="GET";
}
if(options.data===null) {
options.data={};
}
if(options.url===null) {
options.url='/';
}
if(options.cache===null) {
options.cace=false;
}
if(options.highlight===null || options.highlight===true) {
options.highlight=true;
} else {
options.highlight=false;
}
$.ajax({
type: options.type,
url: options.url,
data: options.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($(options.target).is("input")) {
$(options.target).val(responseText);
} else {
$(options.target).html(responseText);
}
/* fire change, fire highlight effect... only id highlight==true */
if(options.highlight===true) {
$(options.target).trigger("change").effect("highlight",{},2000);
}
},
complete: function() {
/* if all ajax requests have completed, unblock screen */
if(--ajax_count===0) {
$.unblockUI();
}
},
cache: options.cache,
dataType: "html"
});
}
Qu'en est cette solution, j'ai règles .js qui incluent toutes mes liaisons initiales avec les éléments, si je devais les mettre dans une fonction, alors appelez cette fonction sur le callback de succès de la méthode ajax, de cette façon je ne répèterais pas le code ...
Hmmm, pensées s'il vous plaît: D
Comment faites-vous ajax, '$ .ajax'? Vos options pour ne pas répéter le code sont soit une fonction pour faire cela appelée avec un contexte, ou '.liveQuery()', si vous êtes intéressé soit je peux vous montrer comment faire cela, il suffit de commenter @nick et laissez-moi savoir . –
Hey @nick, j'ai édité mon message original, voir aussi la solution possible ci-dessous ... :-) merci –
Merci :) posté une réponse ci-dessous sur la façon de s'y prendre –