如何在不使用stopPropagation和目标事件的情况下检查div外部是否被点击?

时间:2014-09-04 07:34:44

标签: javascript jquery

我希望能够跟踪多个div元素,并检查是否在其中一个div之外点击了。我想这样做而不使用 stopPropagation (因为它对其他页面元素有影响)和 event.target (因为它不适用于ie7和ie8)。< / p>

是否有其他解决方案可以检查是否点击了多个元素?

我要做的是:点击一个div,添加点击div一个类(活动),如果点击活动div之外//做某事 P.S:div是'nonActive&#39;上课是外面的......

到目前为止我做了什么..

$('.box').addClass('nonActive'); 
var activeBox = "";
$('.box').on("click",function() {
    activeBox = $(this);
    activeBox.addClass('active');

});
$(document).on("click", function() {
   if(!activeBox.hasClass('active')){
      activeBox.hide();
   }else{
      alert('active');
   }
});

直播:http://jsfiddle.net/hcwz4cgd/1/

1 个答案:

答案 0 :(得分:0)

我通过单击文档并单击并将目标上的'clicked'设置为true来实现此目的,因此当调用普通事件处理程序并对其进行冒泡时,我会检查此变量

jsfiddle:http://jsfiddle.net/hcwz4cgd/

var clickout = true,
  mybox = $('#mybox, .anyselectoryouwish');
mybox.on("click",function() {
    clickout = false;
   console.log('box click');
   mybox.removeClass('active');// remove class on all followed elements
   $(this).addClass('active');// add class on active element
});
$(document).on("click", function() {
   if(clickout){
          console.log('clickout : ', mybox);
          mybox.removeClass('active');// remove class on all followed elements
   }
   else  clickout = true;
});

编辑 观看之前代码中的评论