Событие переопределения jquery

У меня такой якорь

<a href='#' onclick='return showform(this)'>click me</a>

Но я хочу, чтобы иметь возможность переопределить функцию onclick, как это сделать в jquery?

потому что, когда я добавляю

$('a').click( function() { alert('hi there!'); } );

новый обработчик кликов не перекрывает старый

Ответы

Ответ 1

Вы пробовали что-то вроде этого:

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

Ответ 2

В вашем случае событие onCick переопределяет jQuery. Что вы можете сделать, это:

$('a').unbind('click').click(function(){
    alert('why hello there children.');
})

Но я считаю, что это должно быть включено после

<a href='#' onclick='return showform(this)'>click me</a>

Тем не менее, вы действительно не должны использовать onClicks в любом случае... это делает код очень сложным для поддержания и изменения (как вы выяснили).

Ответ 3

Если вы используете jQuery таким образом, вам не нужны обработчики в HTML. Не можете ли вы просто удалить атрибут onClick?

Если вы беспокоитесь о разрыве вещей, выполните поиск и замените:

 onclick='return showform(this)'

и замените на

class='showform'

Затем вы можете сделать:

$('a.showform').click(function (e) {
    e.preventDefault();
    return showform(this);
});

который будет поддерживать ваши существующие обработчики.

Ответ 4

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

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

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