我正在开发一个函数,以便当用户单击并保留链接时,该链接不会将用户发送到相应的链接.但是,我使用的功能不起作用.我想要的是用户点击一个链接,如果他们按住它超过一秒钟,该链接将不再有效,并且不会触发任何事件.经过一段时间的浏览,我找不到代码的错误.所以我的问题是,我做错了什么?http://jsfiddle.net/rQP6g/2/
<a href="www.google.com" >link</a>
<script>
var timeoutId = 0;
$('a').mouseup(function() {
timeoutId = setTimeout(function(e) {
e.preventDefault();
e.stopPropagation();
}, 1000);
}).bind('mouseup', function() {
clearTimeout(timeoutId);
});
</script>
Run Code Online (Sandbox Code Playgroud)
这应该工作:http://jsfiddle.net/rQP6g/18/
JS看起来如下:
var mousedownTime;
$('a').mousedown(function(e) {
mousedownTime = new Date();
}).click(function(e) {
// If the mouse has been hold down for more than 1000 milliseconds ( 1 sec. ), cancel the click
if(Math.abs(new Date() - mousedownTime) > 1000)
e.preventDefault();
});?
Run Code Online (Sandbox Code Playgroud)
基本思路是捕获按下鼠标按钮的时间 - 然后,当释放时,触发click事件并在超过1秒时计算它.自链接被按下以来已经过去了.如果是这种情况,则取消click事件并且不会加载链接:)