Jquery .delay(或setTimeout)问题

时间:2014-05-22 14:44:36

标签: jquery delay

我正在为弹出窗口编写一个小函数,我陷入了延迟问题(或setTimeout)。功能背后的想法是什么:你可以知道需要切换哪个块,之后它将从视图中消失。如果延迟设置为0,则表示未应用,则不会消失。这是代码:

function toggleModal(et, delayed) {
       //detect whether popup is visible or not 
       if(et.hasClass('acc-edit-fn'))
       {
            //hidden - then display
            //when IE - fade immediately
            if($.browser.msie)
                {
                 $('#opacity-modal').height($(document).height()).toggleClass('acc-edit-fn');
                }
            else
            //in all the rest browsers - fade slowly
                {
                 $('#opacity-modal').height($(document).height()).toggleClass('acc-edit-fn').fadeTo('fast', 0.5);
                }

            et.html($(this).html()).toggleClass('acc-edit-fn');
            if(delayed > 0) {       
                setTimeout(et.toggleClass('acc-edit-fn'), delayed);
                setTimeout(('#opacity-modal').toggleClass('acc-edit-fn').removeAttr('style'), delayed);         
            }
       }
       else
       {
        //visible - then hide   
        $('#opacity-modal').toggleClass('acc-edit-fn').removeAttr('style');
        et.toggleClass('acc-edit-fn');  
       }
      };

这是一切崩溃的部分:

if(delayed > 0) {       
    setTimeout(et.toggleClass('acc-edit-fn'), delayed);
    setTimeout(('#opacity-modal').toggleClass('acc-edit-fn').removeAttr('style'), delayed);         
}

对于我将用于延迟的内容并不重要 - setTimeout或delay(),没有任何工作。有什么方法可以等待"延迟"之后才发生火灾事件?

这是小提琴:http://jsfiddle.net/22u8Y/

1 个答案:

答案 0 :(得分:1)

setTimeout接受在延迟后执行的函数或代码片段(字符串格式)。您在$

之前错过了('#opacity-modal')

使用

if(delayed > 0) {       
    setTimeout(function(){et.toggleClass('acc-edit-fn'); }, delayed);
    setTimeout(function(){ $('#opacity-modal').toggleClass('acc-edit-fn').removeAttr('style');}, delayed);          
}