Я использую jQuery для привязки ко всем ссылкам на странице (я использую событие 'click', но пробовал различные комбинации 'mousedown' и 'mouseup' вместе с bind () и live ()безрезультатно).
Я могу перехватить щелчок без проблем (со всеми вышеописанными методами).То, что я пытаюсь сделать, это отправить некоторые данные с помощью запроса GET, а после его завершения разрешить действие щелчка по умолчанию.
Поскольку я общаюсь по всему домену, я должен использовать GET, а не POST,и поэтому не может сделать синхронный вызов.
Поэтому я должен вернуть 'false' из события перехваченного щелчка, сохранить событие на потом, а затем вручную запустить его снова после завершения связи.Если я верну true, связь прервется на полпути при изменении местоположения страницы.
Проблема в том, что я не могу найти способ инициировать событие родного щелчка позже.
var storedEvent;
$("#wrapper a").bind('click', function(event, processed) {
$(event.target).unbind('click'); // temporary to make code branching easier
storedEvent = event.target;
event.stopPropagation();
$.ajax({
dataType: 'jsonp',
data: linkData,
jsonp: 'cb',
url: 'xxx',
cache: false,
complete: function(response) {
// How do I now go back and fire the native click event here?
$(storedEvent).click();
}
});
return false;
}
Я пытался использовать click () и trigger () там, где указано, но ни одна из них не работала.
Я знаю, что отправка выполнена успешно, и код правильно разветвляется - яотладили так далеко.Кажется, я просто не могу воспроизвести событие.
Обратите внимание, что я не могу сделать что-то простое, например сохранить href и установить window.location позже - некоторые ссылки имеют свои собственные onClicksустановить, в то время как другие имеют определенные цели varius.В идеале я хотел бы просто воспроизвести событие, которое я остановил ранее.
Я начал использовать делегирование событий с помощью live () и у меня все работало, кроме этого - я упростил его до привязки ()чтобы упростить задачу.