Javascript 使用jquery';s.队列到队列函数
当我从Javascript 使用jquery';s.队列到队列函数,javascript,jquery,queue,Javascript,Jquery,Queue,当我从.queue()函数中删除参数“ajax”时,我的ajax调用会排队。唯一的问题是,jQuery文档说.queue()函数将默认为“fx”队列。不幸的是,我已经在使用这个队列(用于效果),我想使用另一个队列专门用于自定义函数。不幸的是,.queue()函数中的代码从未被调用。下面是我的代码示例(只是一个小片段)。如果您还有其他问题,请随意评论 $(document).ready(function(event) { var target = event.target; var ajaxif
.queue()
函数中删除参数“ajax”时,我的ajax调用会排队。唯一的问题是,jQuery文档说.queue()
函数将默认为“fx”队列。不幸的是,我已经在使用这个队列(用于效果),我想使用另一个队列专门用于自定义函数。不幸的是,.queue()
函数中的代码从未被调用。下面是我的代码示例(只是一个小片段)。如果您还有其他问题,请随意评论
$(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:adding.dequeue()似乎无法解决此问题。我正在更新上面的代码,以反映我添加的。dequeue@bmarti:然而,它没有做任何有用的事情。它只是立即调用每个函数。您应该知道何时出列。@SLaks:i放入$(self.dequeue('customfunctions');在我的ajax调用的成功回调中。我更改了上面的代码以反映这些更改。但它似乎仍然不起作用。@B Parti:您从未启动过初始项。@SLaks:您所说的“从未启动过初始项”是什么意思?我在上面的代码中添加了一个console.log(),这显示在我的js控制台中。顺便说一句,谢谢你的帮助。