点击页面上的任意位置运行Javascript代码(点击某些div除外)

时间:2015-10-08 01:51:59

标签: javascript html

我有这段Javascript代码:

$('#catDIV').on('click',function(){

    $("#dogDIV").fadeOut(500, function() {

            makeCat();

        }).fadeIn(500);
});

这会淡出div“dogDIV”,运行函数“makeCat();”并在点击div“catDIV”时淡入“dogDIV”。

我的问题是,是否可以更改此代码,以便无论页面的哪个部分被点击它都会运行,并且是否可以指定不应激活代码的某些div?

换句话说,是否可以说“如果点击页面的任何部分,除了这些特定的div,然后运行代码......”。

无论用户点击页面的哪个位置,我都希望代码能够运行,但如果用户点击div“catDIV”或另一个名为“mouseDIV”的div,我不希望它运行。我不确定这是否可行?

我已经看到了这个类似的问题:jQuery click anywhere in the page except on 1 div但是是否可以指定不应该触发代码运行的多个div?

对此有任何帮助将非常感谢,提前谢谢!

5 个答案:

答案 0 :(得分:2)

处理点击document#catDIV#mouseDIV。点击后两者什么都不做。点击任何其他元素将冒泡到document的点击处理程序。

    $(document).click(function(evt) {
      alert("clicked anywhere except catDIV and mouseDIV");
    });
    $("#catDIV, #mouseDIV").click(function(evt) {
      evt.stopPropagation();
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="catDIV">catDIV</div>
<div id="cowDIV">cowDIV</div>
<div id="mouseDIV">mouseDIV</div>

答案 1 :(得分:2)

有几种方法可以做到这一点,最简单的方法是使用多个'||' (或)如果div id是事先确定的话。

for (int x = 0; x < fileString.length(); x++) {
            if (keyMapper.containsKey(fileString.charAt(x))) {
                fileString.setCharAt(x,     keyMapper.get(fileString.charAt(x)));
            }
        }

或者,您可以使用类标记您不想激活事件的所有div,而是检查该类的事件处理程序。

编辑:对于后者,代码将是

$('body').click(function(evt) {    
   if (evt.target.id == "example" || evt.target.id == "example2") {
        return;
   }
   $("#dogDIV").fadeOut(500, function() {
        makeCat();
    }).fadeIn(500);
});

答案 2 :(得分:1)

是的,您可以使用document

$(document).on('click',function(e){
    ...
    // Code Ran
});

为了超越某个元素,您可以使用e.toElemente.target进行检查。例如,使用id&#34; test&#34;

散布元素
$(document).click(function(e){
    if($(e.toElement).prop("id") == "test"));
        return false;
    // Code Ran
});

Here就是一个例子。这样,单击按钮时,控制台不会被记录,文档上的任何其他位置都会记录控制台。

答案 3 :(得分:1)

您可以在子元素上使用event.stopPropagation,使事件不会冒泡:

$(window).click(function() {

    // do stuff
});

$('#catDIV, #mouseDIV').click(function(e) {

    e.stopPropagation();
});

答案 4 :(得分:1)

我建议为您不希望点击工作的所有元素添加pointList.append(Point3D( neighbor[0], neighbor[1], z)) ,并排除该类的点击。

示例代码段:

&#13;
&#13;
d = {}
d["a"]=1234
d["b"]=34 
d["c"]=3 
d.except(:b,:c)
&#13;
NoMethodError: undefined method `except' for {"a"=>1234, "b"=>34, "c"=>3}:Hash  from (irb):6    from
/Users/niranjan/.rvm/rubies/ruby-1.9.3-p551/bin/irb:12:in `<main>'
&#13;
&#13;
&#13;