Можно ли удалить обработчики событий inline с помощью jQuery?

У меня есть HTML с атрибутом onclick. Я хочу переопределить этот атрибут с помощью jQuery. Есть ли способ удалить обработчик кликов с помощью jQuery? Использование unbind не работает.

Ответ 1

Попробуйте .removeAttr():

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

jsfiddle demo.

Как только вы избавились от атрибута onclick, вы можете прикрепить свой собственный обработчик кликов.

Ответ 2

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

Это не то, что jQuery заставит стандартные функции и свойства DOM уйти.; -)

Ответ 3

Как указано в http://api.jquery.com/prop/ Удаление встроенного обработчика события onclick с использованием .removeAttr() не обеспечивает желаемого эффекта в Internet Explorer 8, 9 и 11. Чтобы избежать потенциальных проблем, используйте .prop() вместо этого.

Итак, это можно сделать как

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

Ответ 4

Для этого есть плагин, но вы должны делать это только тогда, когда вам действительно нужно. Плагин дает вам возможность вызвать старую функцию или полностью игнорировать ее.

jQuery переопределить плагин

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

Ответ 5

Пробовал заданные параметры, но работал частично, поскольку они удаляли один, но не все.

Вместо этого я попытался выполнить цепочку в качестве обходного пути. Я использую версию 1.4.2.

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