我在使用jQuery选择器时遇到了一些问题。
假设我有以下html,其中(...)
代表未定义数量的html标签。
(...)
<div class="container">
(...)
<div class="subContainer">
(...)
<div class="container">
(...)
<div class="subContainer"/>
(...)
</div>
(...)
</div>
(...)
</div>
(...)
假设我有一个名为container
的javascript变量指向第一个div(带有类容器)。
我想要一个jquery来选择第一个子容器而不是嵌套的子容器。
如果我使用$(".subContainer", container);
,我会同时获得它们。
我尝试过使用
$(".subContainer:not(.container .subContainer)", container);
但这会返回一个空集。 任何解决方案?
感谢。
答案 0 :(得分:7)
您可以使用direct child
选择器:
$("> .subContainer", container);
如果container
是引用顶级.container
元素的jQuery对象,您还可以使用children
方法:
container.children('.subContainer');
或find
和first
方法:
container.find('.subContainer').first();
答案 1 :(得分:7)
基于Jquery: Get all elements of a class that are not decendents of an element with the same class name?我开发了以下解决方案。 谢谢大家。
$.fn.findButNotNested = function(selector, notInSelector) {
var origElement = $(this);
return origElement.find(selector).filter(function() {
return origElement[0] == $(this).closest(notInSelector)[0];
});
};
答案 2 :(得分:0)
要获得第一个subContainer,您可以使用
$('.subContainer')[0]
答案 3 :(得分:0)
这似乎适用于我自己的用途......
$('.item').filter(function() { return $(this).parents('.item').length == 0; });
这只返回#outer
div。
<div class="item" id="outer">
<div class="item" id="inner"></div>
</div>