Lorsque je supprime le paramètre 'ajax' de la fonction .queue()
, mes appels ajax sont mis en file d'attente. Le seul problème est que les docs de jQuery disent que la fonction .queue()
sera par défaut la file d'attente 'fx'. Malheureusement, j'utilise déjà cette file d'attente (pour les effets) et je veux utiliser une autre file d'attente spécifiquement pour les fonctions personnalisées. Malheureusement, le code à l'intérieur de la fonction .queue()
n'est jamais appelé. J'ai un exemple de mon code ci-dessous (juste un petit extrait). Cela devient un peu compliqué si vous avez d'autres questions n'hésitez pas à commenter.Utilisation de la file .queue de jquery pour mettre en file d'attente les fonctions
$(document).ready(function(event) {
var target = event.target;
var ajaxify = new Ajaxify();
$.each(ajaxify.functions, function(index, value){
if ($(target).hasClass(value)) {
console.log('this is in my console, and nowhere else in my code');
$('#main').queue('customfunctions', function (next) {
var self = this;
ajaxify[value](target, event, next, self);
});
}
});
$('#main').dequeue('customfunctions');
});
function Ajaxify() {
this.functions = [
'ajaxify_overlay',
'ajaxify_overlayCancel',
'ajaxify_overlaySubmit',
'ajaxify_rollout',
'ajaxify_rolloutCancel',
'ajaxify_rolloutSubmit',
'ajaxify_upload',
'ajaxify_contentArea',
'ajaxify_itemToggler',
'ajaxify_closer',
'ajaxify_submit',
'ajaxify_inputActivate',
'ajaxify_executeAndRefresh',
'ajaxify_empty' //no comma on the last entry!!!!
];
}
Ajaxify.prototype.ajaxify_executeAndRefresh = function (target, event, next, self) {
event.preventDefault();
var newPath = getVar($(target).attr('class'), 'url'); //getVar function not included, it will get the new path for the ajax call below
var url = $(target).attr('href');
$.ajax({
type: "POST",
url: url,
success: function(transport) {
refreshPage(newPath); //refreshPage function not included, it will do a page refresh with the new path
next();
}
});
}
@SLaks: l'ajout de .dequeue() ne semble pas résoudre ce problème. Je mets à jour mon code ci-dessus pour refléter mon ajout de .dequeue – bmarti44
@bmarti: Cependant, cela ne sert à rien. Il appelle simplement chaque fonction immédiatement. Vous devriez trouver _when_ pour déqueue. – SLaks
@SLaks: je mets la $ (self) .dequeue ('customfunctions'); à l'intérieur du rappel de succès pour mon appel ajax. J'ai changé mon code ci-dessus pour refléter ces changements. Cela ne semble toujours pas fonctionner. – bmarti44