下面的一段代码将一个点击处理程序绑定到一个相对较大/复杂的页面上的大约30个锚点,但它的问题在于似乎需要几秒钟才能完成所有绑定。(我猜。)
var fiveNavs = $('[id$=nav]').find('a:not(.exception)');
fiveNavs.click(function(){
// doingness
return false;
});
我一定有办法看看需要多长时间,或者至少弄清楚什么时候可以采取行动。(如果我过早地点击其中一个链接,它的行为会很奇怪,但如果我在脚本加载完成后等待几秒钟(通过.getScript),它会完美地工作。)
我一直在研究各种检测方法,然后点击函数被绑定,但到目前为止,一切都不起作用。如果可能的话,我想知道从这段代码开始到一切就绪需要多长时间。
至少我想弄清楚的是(伪代码):
$.when( fiveNavs.allBoundUpAndReady() )
.then( alert('bam') );
谢谢!
我怀疑您可能在DOM完全呈现之前绑定了click事件。
我建议您将您的点击处理程序包装在jQuery的文档就绪方法中(见下文):
$(function(){
var fiveNavs = $('[id$=nav]').find('a:not(.exception)');
fiveNavs.click(function(){
// doingness
return false;
});
}):
您实际上绑定到了各个锚点,但您的选择器找不到五个容器是错误的。试试这个
$('[id*="nav"]').on('click','a:not(.exception)',function(){
// Do something here
});
这绑定到id
包含"nav"的容器,但过滤到指定的锚点。这应该只与五个元素绑定,而不是与三十个元素绑定。