2013-05-07 46 views
1

我運行了以下內容:解除綁定('點擊')移除onclick?

$("#myelement").unbind('click'); 

當我認爲在VS.NET 2010監視窗口$("#myelement")[0].onclick,我看到"{...}".

應該unbind('click')刪除onclick事件?

+1

@MohammadAdil權,但附有onclick事件處理程序= 「...」 被解放與'.unbind()'?這是一個問題(至少我理解它的方式) – 2013-05-07 18:27:25

+0

它消除了它們,因爲單擊元素不會觸發之前綁定的任何函數。 jQuery如何在「幕後」做這件事並不重要,但它可能不會將'onclick'設置爲null。 – 2013-05-07 18:28:55

+0

檢查了這一點:http://jsfiddle.net/AwPnn/ – Aristos 2013-05-07 18:32:09

回答

2

不,它不會刪除onclick事件,如演示here所示。

綁定事件存儲在jQuery對象中,因此,unbind只是從jQuery對象中移除事件。

unbind將僅移除使用jQuery bind方法和/或不推薦使用的live方法附加的事件。

如果要重置使用jQuery實際onclick事件,那麼就請使用下列方法之一:

$('#myelement').attr('onclick',''); 
$('#myelement').removeAttr('onclick'); 

如果你想添加一個事件,具體的元素onclick(不綁定jQuery的單擊事件),那麼只需使用以下命令:

$('#myelement').attr('onclick','alert(\'hello\')'); 

我強烈disadvise上面的方法雖然因爲我相信你可以欣賞,增加了功能,這將是一個有點棘手逃避所有的報價...


另外,我可能會建議你使用onoff jQuery的方法,而不是。雖然這些僅是jQuery中的較新版本可用時,它們是優選的方法如所述的位置:

在jQuery 1.7中,。對()方法是用於 事件處理程序安裝到一個文件的優選方法。對於早期版本, .bind()方法用於將事件處理程序直接附加到 元素。處理程序被附加到jQuery對象的當前選定元素 中,所以這些元素必須存在於發生.bind()的調用 處。要獲得更靈活的事件綁定,請參閱.on()或.delegate()中事件委託的討論 。

更多信息請參閱以下內容:

  1. jQuery Attr Method
  2. jQuery Bind Method
  3. jQuery Unbind Method
  4. jQuery On Method
  5. jQuery Off Method
+0

做完上述重置後,$('#myelement')。click(function(){...});努力與onclick聯繫新事件? – 4thSpace 2013-05-07 18:46:24

+0

@ 4thSpace當然,它確實是 – 2013-05-07 18:47:09

+0

@ 4thSpace Ooo等等,對不起,我誤解了你所說的。不是這樣,我會更新我的回答 – 2013-05-07 18:47:51

2

試試這個:

$('#myelement').attr('onclick','').unbind('click'); 
+0

或者我們可以使用$('#myelement')。 removeAttr(的 'onClick'); – Milson 2013-05-07 18:34:22

+0

我發現它從{...}更改爲「」。它似乎工作。 – 4thSpace 2013-05-07 18:35:32

相關問題