delay()不会'第二次工作jquery

delay() doesn't work second time jquery

本文关键字:第二次 工作 jquery 不会 delay      更新时间:2023-10-20

我对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的情况下都能正常工作。但当我第二次为已经拥有并"丢失".open_peak的ID运行该函数时(顺便说一下,它是OnClick),类.open_ppeak不适用于该元素。

所以当我打开一个窗口时,它会显示:

} 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/

从jQuery文档:

请注意,当添加带有.requeue()的函数时,我们应该确保最终调用.dequeue(,以便执行行中的下一个函数。

添加$(this).dequeue();在延迟之后调用的函数中。