Javascript jquery选择未嵌套在子对象中的子对象
我对jQuery选择器有一些问题 假设我有下面的html,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"/>
(…)
代表未定义数量的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>