Ответ 1
Вы пробовали что-то вроде этого:
$("a").removeAttr("onclick");
У меня такой якорь
<a href='#' onclick='return showform(this)'>click me</a>
Но я хочу, чтобы иметь возможность переопределить функцию onclick, как это сделать в jquery?
потому что, когда я добавляю
$('a').click( function() { alert('hi there!'); } );
новый обработчик кликов не перекрывает старый
Вы пробовали что-то вроде этого:
$("a").removeAttr("onclick");
В вашем случае событие onCick переопределяет jQuery. Что вы можете сделать, это:
$('a').unbind('click').click(function(){
alert('why hello there children.');
})
Но я считаю, что это должно быть включено после
<a href='#' onclick='return showform(this)'>click me</a>
Тем не менее, вы действительно не должны использовать onClicks в любом случае... это делает код очень сложным для поддержания и изменения (как вы выяснили).
Если вы используете jQuery таким образом, вам не нужны обработчики в HTML. Не можете ли вы просто удалить атрибут onClick
?
Если вы беспокоитесь о разрыве вещей, выполните поиск и замените:
onclick='return showform(this)'
и замените на
class='showform'
Затем вы можете сделать:
$('a.showform').click(function (e) {
e.preventDefault();
return showform(this);
});
который будет поддерживать ваши существующие обработчики.
Для этого есть плагин, но вы должны делать это только тогда, когда вам действительно нужно. Плагин позволяет вам вызвать исходную функцию или полностью игнорировать/заменить ее
$(divElementObj).override('onclick', 'click', function(...));