我遇到了jquery的delay()问题。我正在使用带有变量的if,else if条件:
var myvar = false;
function OpenAnimation(Clicked) {
if (myvar == true) {
$(Clicked).removeClass('open_peak');
myvar = false;
} else if (Clicked == 'an ID') {
$(Clicked).delay(500).queue(function () { $(this).addClass('open_peak') });
myvar = true;
}
该功能正常,每个ID都传入其中。但是我第二次运行该函数的 ID已经存在且“丢失”.open_peak (顺便说一下是OnClick),类 .open_peak 不适用于该元素。
所以,当我打开一个窗口时,它会:
} else if (Clicked == 'an ID') {
$(Clicked).delay(500).queue(function () { $(this).addClass('open_peak') });
myvar = true; //which tells me that a window(element) is indeed open
}
当我关闭它时:
if (myvar == true) {
$(Clicked).removeClass('open_peak');
myvar = false;//No window is opened
}
我有更多的代码,但 .open_peak 没有应用。
这是一个JSFiddle,您可以在其中看到问题:http://jsfiddle.net/at3eyLoL/
答案 0 :(得分:3)
来自jQuery文档:
请注意,在使用.queue()添加函数时,我们应该确保最终调用.dequeue(),以便行中的下一个函数执行。
添加$(this).dequeue();在延迟后调用的函数中。