Ответ 1
Попробуйте следующее:
// Setting the DOM element onclick to null removes
// the inline click handler
$("#sample")[0].onclick = null;
$("#sample").click(function() { alert("done") });
Это кажется обманчиво простым.
Как вы переопределите событие onclick в следующем HTML с помощью JavaScript?
<a id="sample" href="..." onclick="alert('hello world')" />...</a>
Я пробовал это с помощью jQuery, но это не помогло:
$('#sample').attr('onclick','alert("done")')
Предположим, что HTML предварительно написан и не может быть изменен, кроме как манипулировать им с помощью JavaScript.
Попробуйте следующее:
// Setting the DOM element onclick to null removes
// the inline click handler
$("#sample")[0].onclick = null;
$("#sample").click(function() { alert("done") });
<a id="sample" href="..." onclick="alert('hello world'); return false;" />...</a>
или
$('#sample').attr('onclick','alert("done"); return false;')
Несмотря на возможность установки return false;
либо непосредственно в onclick, либо с помощью jQuery, на самом деле не требуется использовать jQuery. Преимущество заключается в том, что по какой-либо причине ваш jQuery script приведет к 404
, ваш код все равно будет работать.
Я нашел ответ здесь.
Это также можно сделать без jQuery:
document.getElementById("sample").setAttribute('onclick','alert("done")');
Try:
document.getElementById("sample").onclick = $.noop;
$.noop == function(){};