首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内div受外部div的onclick影响

内div受外部div的onclick影响
EN

Stack Overflow用户
提问于 2014-07-11 12:05:29
回答 3查看 2.2K关注 0票数 2

问题:

单击内部div会触发外部div的onClick事件。在本例中,它切换外部<div>、内部<div><p>元素的可见性。

我尝试过的:

在内部div上设置z索引高于外部div.没有效果。

HTML:

代码语言:javascript
复制
<div id='messageForm' onClick=toggleMessageForm() >
  <div class="innerBox">

    <p>Hi!</p>

  </div>
</div>

JS:

代码语言:javascript
复制
function toggleMessageForm(){
  $('#messageForm').toggle();
}

注意:我之所以使用toggle()而不是show(),是因为我在最初从原始网页中的一个按钮显示表单时使用的是相同的函数。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-07-11 12:08:04

完全删除onClick属性,然后用jQuery连接处理程序:

代码语言:javascript
复制
$("#messageForm").click(function(evt) {
    evt.stopPropagation();
    toggleMessageForm();
});

将其放在script元素中,在div中低于div(或者将其包装在ready处理程序中)。

evt.stopPropagation取消单击事件的冒泡(停止传播),因此它不会到达父div。

如果您真的非常希望保留onClick属性,则可以这样做:

代码语言:javascript
复制
<div id='messageForm' onClick="toggleMessageForm(event);">

...and然后在toggleMessageForm

代码语言:javascript
复制
function toggleMessageForm(evt){
  if (evt.stopPropagation) {
      evt.stopPropagation();
  }
  else {
      evt.cancelBubble = true;
  }
  $('#messageForm').toggle();
}

...but由于您已经在使用jQuery,这将是不寻常的。

票数 2
EN

Stack Overflow用户

发布于 2014-07-11 12:08:51

使用stopPropagation();

代码语言:javascript
复制
function toggleMessageForm(e){
 e.stopPropagation();
  $('#messageForm').toggle();
}

e.stopPropagation();

防止事件在DOM树上冒泡,防止任何父处理程序被通知该事件。

票数 0
EN

Stack Overflow用户

发布于 2014-07-11 12:15:05

如果您有一个或多个stopImmediatePropagation,单击外部和内部div上的函数,并且只想执行其中一个(例如外部div),请使用jQuery的jQuery函数:

代码语言:javascript
复制
$("#messageForm").click(function(e) {
    e.preventDefault();
    e.stopImmediatePropagation();
    $('#messageForm').toggle();
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24697305

复制
相关文章

相似问题

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