Мне нужно инициировать событие щелчка по ссылке, а затем, если ни один из слушателей не предотвратил значение по умолчанию, изменить местоположение.
Это то, что у меня есть до сих пор:
var $el = $('a#my_special_link');
var onClick = $el.attr('onclick');
// Hack to capture the event object
var ev_reference;
var ev_capture = function(ev) { ev_reference = ev; }
$el.bind('click', ev_capture);
// Don't leave out the onClick handler
if ( typeof onClick == 'function' )
$el.bind('click', onClick);
$el.trigger('click');
// Clean up
$el.unbind('click', ev_capture);
if ( typeof onClick == 'function' )
$el.unbind('click', onClick);
// Redirect if necessary
if ( ! ev_reference.isDefaultPrevented() )
window.location = $el.attr('href');
Любые предложения по улучшению приветствуются.
PS: Да, это то же самое, что и обычная ссылка, за исключением того, что вы можете выполнять некоторые другие промежуточные действия.
PPS: Нет, просто $el.trigger('click'); не изменит местоположение.