解除绑定特定的jquery元素

时间:2009-08-07 18:39:08

标签: jquery bind unbind

假设我想通过特殊功能处理页面上的所有链接,所以我这样做:

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

但我有一个带有链接的导航栏,我希望以不同方式处理。所以我想这样做,这不起作用:

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

我不想在第一个语句中明确排除导航栏,因为内容是动态加载的,因此我需要监视点击的元素会根据内容而改变。基本上我希望能够从最初绑定的较大的初始元素子集中动态解除绑定元素的特定子集。

有什么建议吗?

:: UPDATE ::

我真诚的道歉,你们都是正确的 - 有一些时髦的命令被命令。遗憾!

3 个答案:

答案 0 :(得分:2)

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

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

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

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

答案 1 :(得分:0)

奇怪 - 看起来很正确。您是否测试过您的初始陈述正在选择您认为它的作用?

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>

这样可以正常工作,但是如果我在内联中构建我的函数,我需要从select元素中取消绑定所有事件以将其删除。不确定是否适用但值得一提。

你介意发布更多代码&gt;看起来可能还有其他错误。

答案 2 :(得分:0)

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