我有这段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?
对此有任何帮助将非常感谢,提前谢谢!
答案 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.toElement
或e.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))
,并排除该类的点击。
示例代码段:
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;