2011-02-18 64 views
2

这是从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")选择器是可访问的,它从其他地方正确触发它。显然,在循环函数内部触发鼠标事件是有问题的。

有什么建议吗?

+0

其实没有什么关系的问题,但是这整个片段可以缩短到'的setTimeout(函数(){$ (“#anchorLink”)。trigger('click');},5000);'。你根本没有使用间隔,你只是复制超时。 – deceze

+0

是的,我知道。我的问题有点复杂,所以我真的需要间隔,而不是超时。如果感兴趣,请参阅相关问题。这是来自我的问题的孤立和简化的代码。 – ZolaKt

+0

只要确保。 :) – deceze

回答

3

尝试:

$(document).ready(function(){ 
    // ... 
}); 

代替:

$(document.ready(function(){ 
    // ... 
}); 
+0

好,但这显然只是一个错字(在这个问题,而不是工作代码)。前面的问题在那里有正确的。 –

+0

@D_N:是的,但修复后的代码工作。请参阅:http://jsfiddle.net/QkmSn/ – rsp

+0

我站好了。尼斯。 –

相关问题