Javascript delay()不';jquery无法第二次工作

Javascript delay()不';jquery无法第二次工作,javascript,jquery,Javascript,Jquery,我对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') { $(Cl

我对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\u peak(顺便说一下,这是OnClick),类。open\u 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\u peak不适用

这里是一个JSFIDLE,您可以从jQuery文档中看到问题:

请注意,在使用.queue()添加函数时,我们应该确保最终调用.dequeue(),以便执行第行中的下一个函数


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

您是否可以将代码作为堆栈片段或制作JSFIDLE来演示问题?添加了一个链接()。我不得不稍微修改代码,以便if检查它是否是
部分中的id,否则if
部分中的id,但是问题在那里是可见的。它成功了!我写道:$(单击).delay(500).queue(函数(){$(this).addClass('open_peak').dequeue()})谢谢你的回答:)