2011-12-19 84 views
13

這是一個奇怪的問題。我們的內聯網上有一些生產鏈接。一些胭脂的JavaScript在我們Intranet主頁上的所有鏈接上返回「false」。JQuery:從'a'標籤中刪除「OnClick」事件

我們無權訪問源以重新構建控件並修復此javascript。

所以作爲臨時創可貼我想使用jQuery

的鏈接,進入的鏈接所有「的onClick」事件,現在是這樣的:

<a href="https://www.mysite.com/" onclick="AddHit('Header: mysite.com', 'http://www.mysite.com'); return false;" title="Mysite Home">www.Mysite.com</a> 

我想寫一些jquery獲取「onclick ='AddHit ...」的代碼。

+0

http://stackoverflow.com/questions/209029/best-way-to -remove-an-event-handler-in-jquery – 2011-12-19 17:49:46

回答

28

你可以試試這個:根據意見和jquery Docs

$("a").removeAttr("onclick"); 

編輯更新應答:

注意:刪除使用.removeAttr()沒有實現內聯onclick事件處理程序在Internet Explorer 6,7或8中的預期效果。爲避免潛在問題,請使用.prop()代替

要做到這一點

的最佳方式:

$("a").prop("onclick", null); 
+0

更好: $('...')。prop('onclick',null).off('click'); 檢查http://stackoverflow.com/a/1687805/3063226 – Heitor 2017-03-19 07:17:11

+0

即使沒有.off('click'),.prop('onclick',null),它看起來仍然可以正常工作,至少對於IE11是足夠的。 – 2017-07-25 14:53:47

7

從擁有它的所有鏈接中刪除屬性:

$('a[onclick]').removeAttr('onclick'); 
-1

使用.unbind()方法或off()擺脫這一點。

+0

我相信會刪除通過jQuery或addEventListener()添加的事件處理程序,而不是內聯的onClick事件處理程序。 - Jasper – Foreever 2014-01-24 12:02:48

2

你可以做這樣的事情;

$('a[onclick]').removeAttr('onclick'); 
0

沒有測試,但我認爲這應該工作:

$(document).ready(function(){ 
    $('a').removeAttr("OnClick"); 
}); 

更多信息:http://api.jquery.com/removeAttr/

+3

來自同一頁:「使用'.removeAttr()'刪除inline'onclick'事件處理程序在Internet Explorer 6,7或8中無法達到預期效果。爲避免潛在問題,請使用'.prop() '而不是:'$ element.prop(「onclick」,null);'「 – WynandB 2013-02-13 23:20:51

2
$(function(){ 
    $('a[onclick*="AddHit"]').removeAttr('onclick'); 
} 

這將刪除所有的人,但是你要確保你不不要將它從不需要的鏈接中移除。如果你有一個你可以在刪除之前驗證的類,或onclick的內容會更好,那麼很多東西會掛鉤onclick屬性。會討厭看整個網站停止工作,因爲需要的JS沒有被調用。這將通過onclick中的AddHit函數刪除任何onclicks,以保證您的安全。

2

這將刪除onclick值爲「AddHit(」(其他鏈接保持不變)的所有鏈接的onclick屬性。

$('a[onclick^="AddHit("]').removeAttr("onclick"); 
3

據jQuery的文檔,你應該使用.prop()來的onclick刪除內聯,因爲這避免了在Internet Explorer 6,7或8的問題。

試一下這個

$element.prop("onclick", null); 

我需要刪除第一個點擊所以這裏後標籤的onclick是我做過什麼:

onclick="$(this).prop('onclick', null);" 

希望它可以幫助

+2

到目前爲止,這是唯一正確的答案。使用jQuery,'.removeAttr()'和'.unbind()'都不會安全地刪除某些版本的Internet Explorer中的內聯'onclick'事件處理程序。請參閱['.removeAttr()'](http://api.jquery.com/removeAttr) – WynandB 2013-02-13 23:28:17

0

,請記住這如果你的'onclick'屬性是ONLINE並且在一個MODAL中(如bootstrap) s:(in modal)

<a id="myDiv" href="#" onclick="doSomething();">Click here !</a> 

- >請提及<body>標籤!

jQuery中(與第一選擇體):

$('body #myDiv').prop('onclick', null); 

我搜索了幾個小時......