簡體   English   中英

我可以使用jQuery刪除內聯事件處理程序嗎?

[英]Can I remove inline event handlers using jQuery?

我有一些帶有onclick屬性的HTML。 我想使用jQuery覆蓋該屬性。 有沒有辦法使用jQuery刪除單擊處理程序? 使用unbind不起作用

試試.removeAttr()函數:

$(function() {
    $('a').removeAttr('onclick');
});

的jsfiddle演示

一旦你擺脫了onclick屬性,你可以附加你自己的點擊處理程序。

$("#theElement")[0].onclick = function() {
  whatever();
};
// -- or --
$("#theElement")[0].onclick = null;

並不是說jQuery會使標准的DOM函數和屬性消失。 ;-)

http://api.jquery.com/prop/中引用。使用.removeAttr()刪除內聯onclick事件處理程序無法在Internet Explorer 8,9和11中實現所需的效果。為避免潛在問題,請使用.prop ()代替。

所以這可以做到

$(function() {
    $('a').prop('onclick', false);
});

有一個插件,但你應該只在你需要的時候這樣做。 該插件為您提供了調用舊函數或完全忽略它的選項。

jQuery Override插件

$(divElementObj).override('onclick', 'click', function(...));

試過給定的選項,但部分工作,因為他們刪除了一個但不是全部。

相反,我嘗試使用鏈接作為解決方法。 我使用的是1.4.2版本。

jQuery("selector")
    .removeAttr("onclick").removeAttr("onmouseout").removeAttr("onmouseover");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM