我想使用jQuery为链接添加点击处理程序。当用户点击链接时,jQuery需要找到附近的面板按钮,触发单击该按钮,等待面板打开(大约一秒钟),然后允许浏览器对链接执行自然操作 - 将页面锚定到之前隐藏在折叠面板下的位置。
$('a.fn').click(
function(){
$(this).closest(div.panel).not('.isOpen).find('div.panel a.opener').trigger('click');
setTimeout(1000);
return true;
}
);
单击时,面板会打开,但浏览器会立即尝试锚定页面并感到困惑,停在锚点目标的一半处。
如何让浏览器在执行链接操作之前等待一秒钟?
答案 0 :(得分:1)
您应该使用preventDefault启动您的功能。
$('a.fn').on('click', function(ev) {
ev.preventDefault();
window.setTimeout(function() {
$(this).closest(div.panel).not('.isOpen').find('div.panel a.opener').trigger('click');
}, 1000);
return true;
});
答案 1 :(得分:1)
您似乎误解了setTimeout
应该如何运作。我尝试过这样的事情:
$('a.fn').on('click', function(e){
e.preventDefault();
var href = this.href;
$(this).closest('div.panel:not(.isOpen)').find('div.panel a.opener').trigger('click');
setTimeout(function() {
window.location = href; // default anchor click action
}, 1000);
return true;
}
);