我们如何检测元素外的双击?

时间:2016-02-18 18:34:01

标签: javascript jquery

我有这个功能:

this.div.click( function(e) {
   ...
});

我想听一下这个元素之外的双击。我知道我们可以对元素外部的点击使用blur()。但我想只处理双击事件。最好的方法是什么?

2 个答案:

答案 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。认为它应该更快。