Javascript 子div影响css中的父div并触发jquery方法

Javascript 子div影响css中的父div并触发jquery方法,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我有一个类为“非常大的div”的父div,它嵌套了另一个“container div”,而container div也嵌套了另一个子div。非常大的div就像一个按钮,它后面的div是一个容器,当我点击非常大的div时会出现 <div class="very-big"> <div class="container"> <!-- Some other more nested divs that has anchors and buttons -->

我有一个类为“非常大的div”的父div,它嵌套了另一个“container div”,而container div也嵌套了另一个子div。非常大的div就像一个按钮,它后面的div是一个容器,当我点击非常大的div时会出现

<div class="very-big">
  <div class="container">
   <!-- Some other more nested divs that has anchors and buttons  -->
   <div class="friend-request">
     <div class="button-div">
     <button class="accept">Trigger</button>
      <button class="refuse">Trigger</button>
     </div>
     </div>

  </div>
 </div>
第二个问题是:我有一个处理容器的jquery,因此它由“非常大的div”来打开/关闭


每当我单击容器内的锚或按钮时,容器都有锚和按钮标签,它被切换到关闭自身,这不是我想要的,我想要的只是当我只按下“非常大的div”时,切换被激活。

这对我有效,但我不确定它是否是您需要的

请添加完全重新创建您看到的错误所需的最低HTML、CSS和Javascript

$(文档).ready(函数(){
$(“.container”).hide();
$(“.very big”)。单击(函数(e){
控制台日志(e);
var电流=$(e.toElement);
if(当前的.is('.container')){
e、 停止传播();
返回false;
}
$('.container').toggle();
});
});

其他文本
这是用来填写内容的文本,我可以点击它。

这对我很有效,但我不确定这是否是您需要的

请添加完全重新创建您看到的错误所需的最低HTML、CSS和Javascript

$(文档).ready(函数(){
$(“.container”).hide();
$(“.very big”)。单击(函数(e){
控制台日志(e);
var电流=$(e.toElement);
if(当前的.is('.container')){
e、 停止传播();
返回false;
}
$('.container').toggle();
});
});

其他文本
这是用来填写内容的文本,我可以点击它。

正如@Jhecht给出的答案一样,我刚刚把他的继承给了我的

通过使用
target
并排除
容器中的所有子元素,可以停止触发切换的子元素单击的传播。非常大的
容器如下所示:

$(".very-big").click(function(e) {
    var target = $(e.target);
    if (!target.is('.very-big *')) {
      $(".container").toggle();
    }
});
代码段:
$(文档).ready(函数(){
$(“.container”).hide();
$(“.very big”)。单击(函数(e){
var目标=$(e.target);
如果(!target.is('.very big*')){
$(“.container”).toggle();
}
});
});

其他文本
这是用来填写内容的文本,我可以点击它。

正如@Jhecht给出的答案一样,我刚刚把他的继承给了我的

通过使用
target
并排除
容器中的所有子元素,可以停止触发切换的子元素单击的传播。非常大的
容器如下所示:

$(".very-big").click(function(e) {
    var target = $(e.target);
    if (!target.is('.very-big *')) {
      $(".container").toggle();
    }
});
代码段:
$(文档).ready(函数(){
$(“.container”).hide();
$(“.very big”)。单击(函数(e){
var目标=$(e.target);
如果(!target.is('.very big*')){
$(“.container”).toggle();
}
});
});

其他文本
这是用来填写内容的文本,我可以点击它。

只是一个提示:如果它也有标记结构,那么回答您的问题会更容易。事件会向上传播,因此如果您希望事件只应用于子级容器,则需要记住调用
e.stopPropagation()
@Jhecht您能否就我的jquery演示一个技巧:如果它也有标记结构,那么回答您的问题会更容易。事件会向上传播,因此如果您希望事件只应用于子级容器,您需要记住调用
e.stopPropagation()
@Jhecht请您就我的jquery演示一下这是我的问题。试着按下“这是填写内容的文本,我可以点击它”,它会切换隐藏,就像你按下“其他文本”。我想防止这种情况发生。我想阻止从父对象到子对象的传播,因此父对象是唯一受事件或方法影响的对象。这就是我的问题所在。试着按下“这是填写内容的文本,我可以点击它”,它会切换隐藏,就像你按下“其他文本”。我想防止这种情况发生。我想阻止从父对象到子对象的传播,因此父对象是唯一受事件或方法影响的对象。这起作用,但另一个问题是,容器中有一个按钮,现在当我单击该按钮时,它只会再次触发事件(容器会轻弹并重新显示)好像我点击了大分区。如何停止that@AndrewMk也就是说,为什么我们要求用户发布完整的代码或至少最少的代码来重现问题。我请求再次编辑/更新您的问题。好的,我完全理解这一点。但另一个问题是,我在容器内有一个按钮,现在当我单击该按钮时,它只会再次触发事件(容器会轻弹并再次出现)好像我点击了大分区。如何停止that@AndrewMk也就是说,为什么我们要求用户发布完整的代码或至少最少的代码来重现问题。我请求再次编辑/更新您的问题。好的,完全理解
$(".very-big").click(function(e) {
    var target = $(e.target);
    if (!target.is('.very-big *')) {
      $(".container").toggle();
    }
});