delay()第二次jquery不起作用

时间:2015-02-13 23:42:18

标签: 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') {

        $(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/

1 个答案:

答案 0 :(得分:3)

来自jQuery文档:

  

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

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