首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Javascript -仅在父级单击时隐藏

Javascript -仅在父级单击时隐藏
EN

Stack Overflow用户
提问于 2014-03-29 17:39:18
回答 3查看 70关注 0票数 0

所以我有一个简单的标记:

代码语言:javascript
运行
复制
<div id="edit_image" class="image_manipulator">
    <input type="text" />
</div>

这是javascript:

代码语言:javascript
运行
复制
var image_manipulators= document.getElementsByClassName("image_manipulator");
for(var i = 0; i < image_manipulators.length; i++) {
    image_manipulators[i].onclick = function() {
        this.style.display = "none";
    };
}

这是CSS:

代码语言:javascript
运行
复制
.image_manipulator {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.9);
    z-index: 1;
    display: none;
}
#edit_image input {
    display: table-cell;
    vertical-align: middle;
    margin: 0 auto;
}

这是小提琴

如果你点击半透明框,你可以看到它消失正常,但是如果你试图在文本框上写一些东西,那么半透明框仍然消失。我怎么才能阻止这一切的发生。:)

不允许使用jQUery。:)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-03-29 17:43:29

您可以尝试event.stopPropagation();

演示

html

代码语言:javascript
运行
复制
<div id="edit_image" class="image_manipulator">
    <input id="textBox" type="text" />
</div>
<button id="showBox">Click me</button>

Java脚本

代码语言:javascript
运行
复制
var image_manipulators = document.getElementsByClassName("image_manipulator");
for (var i = 0; i < image_manipulators.length; i++) {
    image_manipulators[i].onclick = function () {
        this.style.display = "none";
    };
}

document.getElementById("showBox").onclick = function() {
    document.getElementById("edit_image").style.display = "block";
}

document.getElementById("textBox").onclick = function(e) {
    e.stopPropagation(); 
}
票数 4
EN

Stack Overflow用户

发布于 2014-03-29 17:48:26

单击“输入”时应取消默认行为,请参阅http://jsfiddle.net/XVS2C/8/

代码语言:javascript
运行
复制
document.getElementById("test").onclick = function( e ){
if (!e)
  e = window.event;

//IE9 & Other Browsers
if (e.stopPropagation) {
  e.stopPropagation();
}
//IE8 and Lower
  else {
   e.cancelBubble = true;
  }
}

将id设置为输入

代码语言:javascript
运行
复制
<input type="text" id="test" />
票数 1
EN

Stack Overflow用户

发布于 2014-03-29 17:42:21

试着使用以下方法:

var image_manipulators= document.getElementsByClassName("image_manipulator"); for(var i = 0; i < image_manipulators.length; i++) { image_manipulators[i].onclick = function(e) { this.style.display = "none"; e.stopPropagation(); }; }

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22734474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档