Событие переопределения jquery - PullRequest
13 голосов
/ 18 декабря 2009

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

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

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

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

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

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

Ответы [ 4 ]

22 голосов
/ 18 декабря 2009

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

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

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

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

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

18 голосов
/ 18 декабря 2009

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

$("a").removeAttr("onclick");
10 голосов
/ 18 декабря 2009

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

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

 onclick='return showform(this)'

и заменить на

class='showform'

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

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

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

0 голосов
/ 15 ноября 2012

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

Плагин переопределения jQuery

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