Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何检测元素外部的单击,但该元素有子元素_Javascript_Jquery - Fatal编程技术网

Javascript 如何检测元素外部的单击,但该元素有子元素

Javascript 如何检测元素外部的单击,但该元素有子元素,javascript,jquery,Javascript,Jquery,我知道这个问题可能是重复的,因为我看到了这个解决方案: 如果在元素外部单击,我想删除#main元素,但该元素内部也有子元素。也就是说,如果我单击#main元素的子元素之一,则#main元素不应关闭 <div id="main-element"> <div class="test">1</div> <div class="test">2</div> <div class="test">3</div

我知道这个问题可能是重复的,因为我看到了这个解决方案:

如果在元素外部单击,我想删除#main元素,但该元素内部也有子元素。也就是说,如果我单击#main元素的子元素之一,则#main元素不应关闭

<div id="main-element">
    <div class="test">1</div>
    <div class="test">2</div>
    <div class="test">3</div>
    <div class="test">4</div>
</div>
这可能有助于:

使用最接近循环的父类和类来显示/隐藏元素

$('html').on('click', function(){
  var mainElement = $('#main-element');
  if($(this).closest(mainElement).length){
      return;
  }
  mainElement.addClass('main-element-closed')
}) 

试着用jquery引用jquery的函数is HasClass(“您的子元素类”)。单击(文档)

该函数的可能副本与他所要求的完全不同。
$('html').on('click', function(){
  var mainElement = $('#main-element');
  if($(this).closest(mainElement).length){
      return;
  }
  mainElement.addClass('main-element-closed')
}) 
$('*').click(function(){
if($(this).has('#main-element') || $(this).parent().has('#main-element')){
// it will open here
}else{
//put your hide code
}
});