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

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

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

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

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

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

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

4 ответов


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

$("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='return showform(this)'

и заменить на

class='showform'

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

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

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


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

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

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