当点击事件绑定并准备好时,jquery检测

时间:2013-11-20 06:40:11

标签: jquery binding

以下代码将点击处理程序绑定到相对较大/复杂页面上的大约30个锚点,并且它的问题在于它似乎需要几秒钟才能完成所有内容的绑定。 (我猜。)

    var fiveNavs = $('[id$=nav]').find('a:not(.exception)');
    fiveNavs.click(function(){ 
        // doingness
        return false;
    });

我必须有某种方式来看看它需要多长时间,或者至少要弄明白它什么时候准备采取行动。 (如果我太快点击其中一个链接,它会表现得很奇怪,但是如果我在脚本加载完成后等待几秒钟(通过.getScript),它就能完美运行。)

我一直在研究各种检测方法,然后绑定一个点击功能,但到目前为止我没有任何工作。如果可能的话,我想知道从这段代码开始到现在一切都已准备就绪所需的时间。

至少我想弄清楚的是(伪代码):

   $.when( fiveNavs.allBoundUpAndReady() )
    .then( alert('bam') );

谢谢!

2 个答案:

答案 0 :(得分:0)

我怀疑您可能在完全呈现DOM之前绑定了click事件。

我建议你将你的点击处理程序包装在jQuery的文档就绪方法中(见下文):

$(function(){
    var fiveNavs = $('[id$=nav]').find('a:not(.exception)');
    fiveNavs.click(function(){ 
       // doingness
       return false;
    });
}):

答案 1 :(得分:0)

您实际上是绑定到各个锚点,但是找到五个容器的选择器是错误的。试试这个

 $('[id*="nav"]').on('click','a:not(.exception)',function(){
   // Do something here
 });

这绑定到包含'nav'的id的容器,但过滤到指定的锚点。这应该只绑定五个元素而不是三十个。