解除绑定特定的jQuery元素

问题描述:

比方说,我想处理一个网页上的所有链接,通过一个特殊的功能,所以我做的:解除绑定特定的jQuery元素

$('a').bind("click", handleLinks); 

但是我有,我想不同的处理链接导航栏。所以,我要做到这一点,它不工作:

$('#navbar a').unbind("click", handleLinks); 

我不想特别排除在第一条语句的导航栏,因为内容是动态加载的,所以元素我需要监控的点击将改变取决于内容。基本上我希望能够从最初绑定的元素的较大初始子集中动态地解除元素的特定子集。

有什么建议吗?

::更新::

我真诚的道歉,你是正确的 - 有一些时髦与命令被调用的顺序。抱歉!

+0

我添加了一些测试代码到我的文章作为演示 我做几乎同样的事情,我不会有问题。任何机会,你可以张贴一些周围的代码,所以我们可以尝试解决它? – 2009-08-08 03:59:18

+0

很高兴你的工作! – 2009-08-11 21:20:40

奇怪 - 看起来正确。你有没有测试过你的初始陈述是选择你认为它的作用?

http://docs.jquery.com/Events/unbind

编辑 - 好,我做了一个测试页面

<body> 
     <a href="#" class="a">Test A</a> 
     <a href="#" class="a">Test A</a> 
     <a href="#" class="a">Test A</a> 
     <a href="#" class="b">Test B</a> 
     <a href="#" class="a">Test A</a> 
     <a href="#" class="b">Test B</a> 


     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script> 
     <script type="text/javascript"> 

       $(function(){ 

        $('a').bind("click", testClick); 
        $('a.b').unbind("click", testClick); 


       }); 

       function testClick(){ 
        alert("Link Clicked"); 
       }; 
    </script> 
    </body> 

这工作得很好,但是如果我建我的内联函数,我需要解除绑定选择元素的所有事件将其删除。不知道这是否适用,但值得一提。

你介意发布多一点的代码>它看起来可能有其他问题。

我同意apocalypse9,它看起来像你应该工作。也许不同的方法会有更好的结果...如何使用:不选择与live()。 Live将确保选择器与动态添加的元素一起工作。

$('a:not(#navbar a)').live("click", handleLinks); 

http://docs.jquery.com/Selectors/not#selector

http://docs.jquery.com/Events/live

+0

“我不想在第一条语句中特别排除导航栏” – 2009-08-08 03:40:18

+0

感谢Scott,我编辑了答案。尽管如果#navbar id是动态的,它仍然可能不适用于他,这听起来可能是。 – 2009-08-08 03:54:13

$('a').not('#navbar a').bind('click', handleLinks);