2009-08-07 71 views
1

比方說,我想處理一個網頁上的所有鏈接,通過一個特殊的功能,所以我做的:解除綁定特定的jQuery元素

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

但是我有,我想不同的處理鏈接導航欄。所以,我要做到這一點,它不工作:

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

我不想特別排除在第一條語句的導航欄,因爲內容是動態加載的,所以元素我需要監控的點擊將改變取決於內容。基本上我希望能夠從最初綁定的元素的較大初始子集中動態地解除元素的特定子集。

有什麼建議嗎?

::更新::

我真誠的道歉,你是正確的 - 有一些時髦與命令被調用的順序。抱歉!

+0

我添加了一些測試代碼到我的文章作爲演示 我做幾乎同樣的事情,我不會有問題。任何機會,你可以張貼一些周圍的代碼,所以我們可以嘗試解決它? – 2009-08-08 03:59:18

+0

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

回答

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> 

這工作得很好,但是如果我建我的內聯函數,我需要解除綁定選擇元素的所有事件將其刪除。不知道這是否適用,但值得一提。

你介意發佈多一點的代碼>它看起來可能有其他問題。

2

我同意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

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