Если у вас нет возможности изменить HTML-разметку , вам нужно удалить полный onclick
встроенный обработчик из этого узла и добавить его в свой ненавязчивый обработчик событий.
Это может выглядеть так:
$(function() {
$('a').each(function(_, anchor) {
var onclk = anchor.onclick; // store the original function
anchor.onclick = null; // delete/overwrite the handler
$(anchor).bind('click', function() {
if( onclk() ) {
// do something
}
return false; // call stopPropagation() + preventDefault()
});
});
});
Поскольку вы имеете дело с onclick
встроенным обработчиком событий, вы не можете остановить или предотвратить его запуск с помощью ненавязчиво связанного обработчика событий. Сначала он всегда срабатывает, поэтому вам нужно полностью удалить исходное событие.
Вам не нужно хранить функцию, вы также можете просто установить onclick
в null
и переписать логику в своем собственном обработчике событий. Я сделал это только для удобства.
Демо : http://jsfiddle.net/em9KP/