Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.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 jquery选择未嵌套在子对象中的子对象_Javascript_Jquery_Html_Jquery Selectors - Fatal编程技术网

Javascript jquery选择未嵌套在子对象中的子对象

Javascript jquery选择未嵌套在子对象中的子对象,javascript,jquery,html,jquery-selectors,Javascript,Jquery,Html,Jquery Selectors,我对jQuery选择器有一些问题 假设我有下面的html,(…)代表未定义数量的html标记 (...) <div class="container"> (...) <div class="subContainer"> (...) <div class="container"> (...) <div class="subContainer"/>

我对jQuery选择器有一些问题

假设我有下面的html,
(…)
代表未定义数量的html标记

(...)
<div class="container">
  (...)
    <div class="subContainer">
      (...)
        <div class="container">
          (...)
            <div class="subContainer"/>
          (...)
        </div>
       (...)
     </div>
   (...)
</div>
(...)
但这将返回一个空集。 有解决办法吗


谢谢。

您可以使用
直接子项
选择器:

$("> .subContainer", container);
如果
container
是一个jQuery对象,它引用顶级
.container
元素,那么您还可以使用
子元素
方法:

container.children('.subContainer');
find
first
方法:

container.find('.subContainer').first();

获取您可以使用的第一个子客户

$('.subContainer')[0]
基于此,我开发了以下解决方案。 谢谢大家

$.fn.findButNotNested = function(selector, notInSelector) {
    var origElement = $(this);
    return origElement.find(selector).filter(function() {
        return origElement[0] == $(this).closest(notInSelector)[0];
    });
};

这似乎对我自己有用

$('.item').filter(function() { return $(this).parents('.item').length == 0; });
这只返回
#outer
div

<div class="item" id="outer">
    <div class="item" id="inner"></div>
</div>


$(“.subcainer:first”,container)
$(“.subcainer”,container)。first()
可能会起作用。重复:它不是完全重复。这个问题需要一个子元素,避免嵌套元素。另一个问题需要一个兄弟/侄子元素,避免任何子元素。这将仍然包括所有嵌套和子嵌套的子容器。这不起作用。如果main.subcainer的第一个子级是具有.container子级div的.subcainer的div呢?这不起作用,因为.subcainer不是直接子级。(…)可能包含许多div。这些div在所有情况下都不起作用。如果main.subcainer的第一个子目录是具有.container子目录的div,该目录的子目录是具有.container子目录的div,该怎么办?本页末尾有一个问题的解决方案(awnser)这是一个非常好的解决方案。我建议将该方法重命名为
$.fn.findButNotNested
,因为它就是这样做的(另一个答案是不在内部)。(我试图编辑,但被拒绝了。)
<div class="item" id="outer">
    <div class="item" id="inner"></div>
</div>