这是从here转载的问题。经过一些测试后,我隔离了这个问题,但无法解决问题。无需阅读前面的问题,这是简化的代码:jQuery .trigger('click')里面的间隔函数?
的问题 - >trigger('click')
执行,但该事件不会触发时内部循环(intervaled)函数
$(document.ready(function(){
var checkForConfirmation = function(){
clearInterval(checkInterval);
$("#anchorLink").trigger('click');
}
var checkInterval = setInterval(function(){checkForConfirmation()}, 5000);
});
功能正在被间隔地调用。当回答正确时,间隔停止,并且模拟点击锚链接。
在html文件中有一个锚链接<a id="anchorLink" href="#hiddenDiv">Show</a>
。
它指向隐藏的div有一些内容。我使用Fancybox插件来显示隐藏的div,当锚点链接被点击时。
如果我点击Show
链接fancybox显示,如预期。
如果我得到来自后端的响应,代码按预期执行,但fancybox未显示。
如果我移动$("#anchorLink").trigger('click');
以外的checkForConfirmation
功能,fancybox显示。
当我将$("#anchorLink").trigger('click');
替换为$("#anchorLink").text('Im clicked');
时,该字符串显示在<a id="ancoredLink">
标记中。
这是总结,我在不同情况下尝试过。
这个问题很显然是在触发时点击事件,而在循环函数中。 $("#anchorLink")
选择器是可访问的,它从其他地方正确触发它。显然,在循环函数内部触发鼠标事件是有问题的。
有什么建议吗?
其实没有什么关系的问题,但是这整个片段可以缩短到'的setTimeout(函数(){$ (“#anchorLink”)。trigger('click');},5000);'。你根本没有使用间隔,你只是复制超时。 – deceze
是的,我知道。我的问题有点复杂,所以我真的需要间隔,而不是超时。如果感兴趣,请参阅相关问题。这是来自我的问题的孤立和简化的代码。 – ZolaKt
只要确保。 :) – deceze