Javascript:单击身体中除了一个元素之外的任何地方 [英] Javascript: Click anywhere in body except the one element inside it

查看:529
本文介绍了Javascript:单击身体中除了一个元素之外的任何地方的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望能够点击身体内的任何地方,除了一个特定的元素。我无法找出我所做的代码有什么问题。

当我点击 body .except $ c>,我不希望它隐藏,但是当我点击 body 时,它应该隐藏。

HTML

 < html> ; 
< head>
< title>点击特定元素< / title>
< / head>
< body id =wrapper>
< center>
< div id =except>< / div>
< / center>
< / body>
< / html>

JS

  var body = document.getElementById('wrapper'); 
var except = document.getElementById('except'); (body.addEventListener)
body.addEventListener(click,function(){bodyClick(yes)},false);

if
else
body.attachEvent(onclick,bodyClick);

function bodyClick(点击){

except.addEventListener(click,exceptClick,false);
函数exceptClick(){
bodyClick(no);
if(clicked ===yes)
except.style.display =none;
}

if(clicked ===yes)
except.style.display =none;
else
except.style.display =show;

}

任何帮助表示赞赏。原谅我不正确的格式(这是我的第一篇文章)。谢谢!

解决方案

您需要将 stopPropagation 添加到外部元素。

下面是一个简单的例子: http:// jsfiddle。 net / 5mhqrhwk / 3 /

  var body = document.getElementById('wrapper'); 
var except = document.getElementById('except');

body.addEventListener(click,function(){
alert(wrapper);
},false);
except.addEventListener(click,function(ev){
alert(except);
ev.stopPropagation(); //这很重要!同时获得警报
},false);

HTML:

 < div id =wrapper> 
< center>
< div id =except>< / div>
< / center>
< / div>


I want to be able to click anywhere inside the body except that one specific element. I can't find out what's wrong with the code I have done.

When I click on the one specific element .except inside body, I don't want it to hide but when I click on body it should hide.

HTML

<html>
  <head>
    <title>Click anywhere except that specific element</title>
  </head>
  <body id="wrapper">
    <center>
      <div id="except"></div>
    </center>
  </body>
</html>

JS

var body = document.getElementById('wrapper');
var except = document.getElementById('except');

if(body.addEventListener)
  body.addEventListener("click", function(){bodyClick("yes")}, false);
else
  body.attachEvent("onclick", bodyClick);

function bodyClick(clicked){

  except.addEventListener("click", exceptClick,false);
  function exceptClick(){
    bodyClick("no");
    if(clicked === "yes")
      except.style.display = "none";
  }

  if(clicked === "yes")
    except.style.display = "none";
  else
    except.style.display = "show";

}

Any help is appreciated. Forgive me for the incorrect formatting (it's my first post here). Thank You!

解决方案

You need to stopPropagation to the outer element.

Here's a simple illustration: http://jsfiddle.net/5mhqrhwk/3/

var body = document.getElementById('wrapper');
var except = document.getElementById('except');

body.addEventListener("click", function () {
    alert("wrapper");
}, false);
except.addEventListener("click", function (ev) {
    alert("except");
    ev.stopPropagation(); //this is important! If removed, you'll get both alerts
}, false);

HTML:

<div id="wrapper">
    <center>
        <div id="except"></div>
    </center>
</div>

这篇关于Javascript:单击身体中除了一个元素之外的任何地方的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆