2011-05-27 60 views
0

死方法我有個「問題」與.live()和.die()方法。 我正在使用jQuery 1.5.1。 這裏是我的方案jQuery的.live()由類選擇方法和通過id選擇

<div id='div1' class='MyClass'>Link 1</div> 
<div id='div2' class='MyClass'>Link 2</div> 
<div id='div3' class='MyClass'>Link 3</div> 

和我的jQuery腳本

$('.MyClass').live('click', function(evt) { 
    local.href = 'home.aspx' 
}); 

由於某種原因,我想禁用鏈接2所以我試圖做到這一點

$('#div2').die('click'); 

,但它不似乎沒有問題。 我認爲,如果我使用類選擇器添加事件,我不能使用id選擇器刪除相同的事件。 我必須使用.live()方法,因爲我不知道我的頁面中有多少div。

任何人有任何建議,以「解決」這個問題?

+0

有不知道你有多少的div有一個頁面上,並動態地添加的div * *後的頁面加載之間的差異。現場只在後一種情況下需要。對於前一種情況,'.bind('click')'可以正常工作。至於生活在類選擇器上,死在ID選擇器上,應該可以正常工作。 「不工作」是什麼意思?如果你可以更具體,我們可以提供幫助。爲了以防萬一,請在您的選擇器中嘗試'div.MyClass'。 – Milimetric 2011-05-27 16:23:07

+2

**先閱讀文檔[here](http://api.jquery.com/die/):** *「注意:爲使.die()正常工作,與其一起使用的選擇器必須完全匹配該選擇器最初與.live()一起使用。「* – 2011-05-27 16:23:24

+1

@Faber從該特定DIV中除去」MyClass「類將自動解決該問題。這對你有用嗎? – 2011-05-27 16:26:49

回答

3

所有你需要做的是從DIV2刪除類「MyClass的」。然後它不會匹配活動綁定的選擇器。

Here's an example

0

別的嘗試:

$('.mySelector').unbind('click'); 
+1

'unbind()'不適用於'live()'... – 2011-05-27 16:38:00

0

一個 「修復」 的解決辦法是這樣的:

$('.MyClass').live('click', function(evt) { 
    if ($(this).data('disabled')) { return false; } // return if disabled 
    // do your stuff 
}); 

然後,當你想關閉一個DIV,這樣做:

$('#div2').data('disabled', true); 

現在,活動處理程序仍會執行,但會立即返回。

你甚至可以後來由上述數據屬性設置爲true重新啓用它。