У меня есть HTML с атрибутом onclick
. Я хочу переопределить этот атрибут с помощью jQuery. Есть ли способ удалить обработчик кликов с помощью jQuery? Использование unbind не работает.
Можно ли удалить обработчики событий inline с помощью jQuery?
Ответ 1
Попробуйте .removeAttr()
:
$(function() {
$('a').removeAttr('onclick');
});
Как только вы избавились от атрибута 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
Для этого есть плагин, но вы должны делать это только тогда, когда вам действительно нужно. Плагин дает вам возможность вызвать старую функцию или полностью игнорировать ее.
$(divElementObj).override('onclick', 'click', function(...));
Ответ 5
Пробовал заданные параметры, но работал частично, поскольку они удаляли один, но не все.
Вместо этого я попытался выполнить цепочку в качестве обходного пути. Я использую версию 1.4.2.
jQuery("selector")
.removeAttr("onclick").removeAttr("onmouseout").removeAttr("onmouseover");