我的代码是......
var timer;
var func = function () {
$("body").append("1");
};
$(document).on('mousedown' , 'a' , function(e){
timer = setTimeout(func, 1000);
}).on('mouseup mouseleave' , 'a' , function(e){
clearTimeout(timer);
});
一切正常。但是当我将此功能设置为<a href="http://google.com">text</a>
我需要设置return false;
(不重定向到网址或其他onclick()
个功能)
我可以在哪里设置return false;
?还是另一种解决方案?
PS:点击正常点击
,我的链接将正常工作游乐场: http://jsbin.com/iwilop/1/edit
答案 0 :(得分:2)
您需要添加click
处理程序,如果调用了func
,则会阻止点击的默认操作。在这里,我使用timer
作为标志:
var timer = 0;
var func = function () {
$("body").append("1");
timer = 0;
};
$(document).on('mousedown' , 'a' , function(e){
timer = setTimeout(func, 1000);
}).on('mouseup mouseleave' , 'a' , function(e){
if (timer) {
clearTimeout(timer);
}
}).on('click', 'a', function() {
if (!timer) {
return false;
}
});
答案 1 :(得分:0)
你需要一个click
处理程序(除非还有其他处理程序可以触发,否则你实际上不需要调用return false):
$(document).on('mousedown' , 'a' , function(e){
timer = setTimeout(func, 1000);
}).on('mouseup mouseleave' , 'a' , function(e){
clearTimeout(timer);
}).on('click', 'a', function(e) {
return false;
});
请注意,以上操作会影响页面上的所有链接 - 您可能需要使a
选择器符合更具体的要求(例如a.blah
)。
编辑:根据您修改后的问题,除T.J. Crowder's answer以外,我无法提供任何优惠。我唯一要说的是注意全局变量 - 你可能希望用immediately invoked function expression或类似的方式包装整个事物。