Я бы, наверное, сделал что-то подобное.
$("a").click(function(event) {
event.preventDefault();
doStuff(this);
var url = $(this).attr("href");
setTimeout(function() {
hideMessage();
window.location = url;
}, 1000);
});
Я не уверен, можно ли увидеть url
из таймерной функции. Если нет, вам может потребоваться объявить его вне обработчика кликов.
Редактировать: Если вам нужно вызвать событие из функции timed, вы можете использовать нечто похожее на то, что предлагал karim79, хотя я бы сделал несколько изменений.
$(document).ready(function() {
var slept = false;
$("a").click(function(event) {
if(!slept) {
event.preventDefault();
doStuff(this);
var $element = $(this);
// allows us to access this object from inside the function
setTimeout(function() {
hideMessage();
slept = true;
$element.click(); //triggers the click event with slept = true
}, 1000);
// if we triggered the click event here, it would loop through
// this function recursively until slept was false. we don't want that.
} else {
slept = false; //re-initialize
}
});
});
Редактировать: После некоторых испытаний и исследований я не уверен, что на самом деле возможно инициировать исходное событие щелчка элемента <a>
. Это представляется возможным для любого элемента, кроме <a>
.