3
我试图找出如何链的定制功能:如何使用.queue()正确链接自定义回调函数?
我有这样的事情:
show_loader(0, function() {
open_box($target_open, event.value, '.wide-col', function() {
hide_loader(function() {
scroll_to_content($target_open, function() {
});
$(this).dequeue();
});
$(this).dequeue();
});
$(this).dequeue();
});
这些功能已经回调实现,看起来是这样的:
function show_loader(position, callback) {
$ajaxSpinner.fadeIn();
status = "loading"; //some non-jQuery stuff
if (callback) $ajaxSpinner.queue(function() {callback()});
}
你可以看到我想要做的事情的基本概念:在函数内的动画完成后执行我的函数。
我不认为我的代码是完全正确的。顺序应该是:显示加载器,打开框,隐藏加载器,然后滚动到内容。相反,这似乎是我测试它时实际发生的情况:显示加载器,隐藏加载器,滚动到内容,然后打开框。
如何获得正确排队的函数调用顺序?我是否在恰当的上下文中使用了keyowrd“this”?
谢谢谢谢谢谢谢谢! 我花了几个小时阅读关于.queue()包括这里:http://stackoverflow.com/questions/1058158/can-somebody-explain-jquery-queue-to-me/3314877#3314877但没有提供我需要的确切解决方案直到你的答案。 有没有一种方法可以确定某个对象的动作是否完成?这对于在完成操作的事件时调用next()很有用。 – trusktr 2011-03-06 10:25:01
@trusktr:我猜你的意思是你的其他问题? ;) – 2011-03-06 10:40:20
@trusktr:我不会那样做。我假设执行这些函数的顺序应该是固定的,那么为什么要分割它呢?创建一个以正确顺序调用方法的函数。 – 2011-03-06 10:46:55