2010-10-20 54 views
0
if (IsBestanswer == "True") 
     { 
     $(bestAnswer).addClass('IsBestanswer'); 
     $(bestAnswer).unbind('click'); 
     } 
bestAnswer.live('click', function() 
{ 

// some code.... 
}); 

實際上,我想禁用bestanswer上的單擊屬性,而IsBestanswer ==「True」。 這裏我使用了unbind()函數。但它不工作...如何通過jquery解除綁定事件

是有禁用,如添加一些CSS屬性的任何梅索德...其實我不知道..

+0

如果(IsBestanswer ==「True」) { $(bestAnswer).addClass('IsBestanswer'); $(bestAnswer).unbind('click'); } bestAnswer.live('click',function() { // some code .... }); – 2010-11-25 13:31:08

回答

4

要取消綁定live處理器,調用die。 (我沒有這樣做)

但是,如果bestAnswer是單個元素,那麼使用live而不是bind沒有意義。
live設計用於與將來匹配元素的選擇器一起使用。

此外,如果您可以編寫bestAnswer.live,則不需要編寫$(bestAnswer),因爲它已經是jQuery對象。
(而不是一個DOM元素,選擇,或HTML字符串,你就需要調用$上)

1

你可以做它在你的處理器,不解除綁定需要:

$("selector for answers here").live('click', function() 
{ 
    if (!$(this).hasClass("IsBestanswer")) { 
     // do something, this isn't the best answer 
    } 
}); 
+0

實際上我想禁用bestanswer對象上的單擊事件時IsBestanswer ==「真」 – 2010-10-20 12:54:24

+0

@Nishant:對。如果元素具有「IsBestanswer」類,上面的邏輯將跳過「if」語句的正文,這似乎是您的問題中的代碼正在嘗試執行的操作。我會更改上面提到的jQuery變量的名稱,這是我從你的問題引用的,因爲它有點誤導... – 2010-10-20 14:14:06