1

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

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

但是我有一个导航栏,其中包含我想以不同方式处理的链接。所以我想这样做,这是行不通的:

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

我不想在第一个语句中专门排除导航栏,因为内容是动态加载的,所以我需要监控点击的元素会根据内容而变化。基本上,我希望能够从最初绑定的较大的初始元素子集中动态地取消绑定特定的元素子集。

有什么建议么?

:: 更新 ::

我真诚的道歉,你们都是对的——命令被调用的顺序有些奇怪。对不起!

4

3 回答 3

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

于 2009-08-08T03:32:13.250 回答
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>

这很好用,但是如果我内联构建我的函数,我需要从选择元素中取消绑定所有事件以将其删除。不确定这是否适用,但值得一提。

您介意发布更多代码吗>看起来可能还有其他问题。

于 2009-08-07T18:46:03.197 回答
0
$('a').not('#navbar a').bind('click', handleLinks);
于 2009-08-09T17:42:29.473 回答