setTimeout只运行一次

时间:2015-08-19 03:53:36

标签: javascript jquery

我想隐藏注册弹出窗口并通过单击注册模式上的“登录”链接来显示登录弹出窗口。哪个工作正常但是问题是setTimeout在每1秒后保持打开登录弹出窗口,而我想暂停1秒钟而只执行一次。 我使用过clearTimeout(),它甚至没有打开登录弹出窗口。 请指导我。提前致谢! 这是我的剧本:

var Tid;
jQuery(document).ready(function ($){
//trigger login link on signup popup
jQuery("#register-form #login-modal a").attr("href",     
"javascript:void(0);");
jQuery("#register-form #login-modal").click(function ()
{
    jQuery("#register-modal-wrap").find(".mfp- 
    close").trigger("click");
    openLoginModal();
});

function openLoginModal(){
    Tid=setTimeout("jQuery('#login-modal a').trigger('click')",1000);
    //clearTimeout(Tid);
}
});

1 个答案:

答案 0 :(得分:0)

正如@Thilo所指出的那样,在代码中有一个递归触发click事件导致openLoginModal()函数被一次又一次地调用,唯一的办法就是确保openLoginModal()函数只被调用一次。这应该可以解决问题。

var Tid;
jQuery(document).ready(function ($){
//trigger login link on signup popup
jQuery("#register-form #login-modal a").attr("href",     
"javascript:void(0);");
jQuery("#register-form #login-modal").click(function ()
{
    jQuery("#register-modal-wrap").find(".mfp- 
    close").trigger("click");
    if(typeof Tid === 'undefined'){
      Tid = setTimeout(openLoginModal,1000);
    }
});

function openLoginModal(){        
    clearTimeout(Tid);
    jQuery('#login-modal a').trigger('click');
}
});