我有这个功能:
this.div.click( function(e) {
...
});
我想听一下这个元素之外的双击。我知道我们可以对元素外部的点击使用blur()。但我想只处理双击事件。最好的方法是什么?
答案 0 :(得分:2)
您可以使用.dblclick()
事件收听body
级别的双击,然后使用target
属性和.contains()
来查看是否点击了发生在div内。
这样的事情:
// div to check if dbl click did _not_ originate from
var mydiv = jQuery("#mydiv").get(0);
// listen to body for double clicks
$("body").dblclick(function(e) {
// if click target does not fall within #mydiv
if (mydiv !== e.target && $.contains(mydiv, e.target) !== true) {
console.log("outside of mydiv");
}
});
Here是一个jsbin演示。
答案 1 :(得分:2)
通过修改e.originalEvent
:
$( "#mydiv" ).dblclick(function(e) {
e.originalEvent.inside = true;
});
$( "body" ).dblclick(function(e) {
if( e.originalEvent.inside ) {
console.log('inside');
} else {
console.log('outside');
};
});
我已更新Johnatan's Bin。认为它应该更快。