单击和双击绑定在同一元素会发生冲突,可以用一个定时器解决。
单击启动一个300ms 的定时器,300ms后 执行单击操作 ,如果300ms内 再单击(即双击),取消定时器并执行双击操作 。
0
300ms
单击
再单击?
单击操作
双击操作
var timer
$(document).ready(function){
$("#btn").bind(
'dblclick': function(){
clearTimeout(timer)
},
'click': function(){
var this_ = $(this)
clearTimeout(timer)
timer = setTimeout(function(){
},300)
}
)
}
如果需要使用指针请注意,setTimeout 会导致指针丢失,所有要在 setTimeout 之前将指针赋值给一个新的变量
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>鼠标事件</title>
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js">
</script>
<script>
var timer
$(document).ready(function(){
$("p").mouseover(function(){
var this_ = $(this)
timer = setTimeout(function(){
this_.css("background-color","yellow");
},2000)
});
$("p").mouseout(function(){
clearTimeout(timer);
$(this).css("background-color","");
});
$("p").click(function(){
clearTimeout(timer);
$(this).css("background-color","green");
});
});
</script>
</head>
<body>
<p>鼠标移动到这里</p>
<p>鼠标移动到这里</p>
<p>鼠标移动到这里</p>
<p>鼠标移动到这里</p>
<p>鼠标移动到这里</p>
<p>鼠标移动到这里</p>
<p>鼠标移动到这里</p>
<p>鼠标移动到这里</p>
<p>鼠标移动到这里</p>
<p>鼠标移动到这里</p>
<p>鼠标移动到这里</p>
<p>鼠标移动到这里</p>
<p>鼠标移动到这里</p>
<p>鼠标移动到这里</p>
<p>鼠标移动到这里</p>
<p>鼠标移动到这里</p>
<p>鼠标移动到这里</p>
<p>鼠标移动到这里</p>
<p>鼠标移动到这里</p>
<p>鼠标移动到这里</p>
<p>鼠标移动到这里</p>
<p>鼠标移动到这里</p>
<p>鼠标移动到这里</p>
<p>鼠标移动到这里</p>
<p>鼠标移动到这里</p>
<p>鼠标移动到这里</p>
<p>鼠标移动到这里</p>
<p>鼠标移动到这里</p>
<p>鼠标移动到这里</p>
<p>鼠标移动到这里</p>
<p>鼠标移动到这里</p>
<p>鼠标移动到这里</p>
<p>鼠标移动到这里</p>
<p>鼠标移动到这里</p>
<p>鼠标移动到这里</p>
</body>
</html>
参考资料:
- https://www.runoob.com/try/try.php?filename=tryjquery_event_mouseover_mouseout
- https://www.cnblogs.com/txhy/p/9994431.html
|