我有这个示例代码:
<div class='root container'>
<div>
<input a ...>
<input b .......>
<submit submit1 doing some magic ajax... -> $(this).closest('div.container').find(':input') ==> a,b - not a,b,c,d>
</div>
<div class='container'>
<div>
<div>
<input c ...>
<input d .......>
<submit submit2 doing some magic ajax... -> $(this).closest('div.container').find(':input') ==> c,d>
<div>
</div>
</div>
</div>
输入没有要定位的类。我想在 .container
下选择输入但不是来自嵌套 .container
的输入.
起点是“提交”,其中click()
行动;我得到了.container
( $(this).closest('.container')
)现在我需要知道如何仅选择未嵌套的输入:
如果我使用 submit1
,我得到输入 a, b
,不是a, b, c, d
。如果我在 submit2
,我得到c, d
.
HTML 结构可能会有所不同,因此我无法使用准确的选择器(例如 div > input ,...)。
最佳答案
您没有inputs
不是 .container
的后代,如果你想获得全部 inputs
.root.container
里面,除了子里面的那些 .container
s,你可以这样做:
var $inputs = $('.root').find('input').filter(function() {
return !$(this).closest('.container').length
|| $(this).closest('.container').hasClass('root');
});
所以你找到了所有 input
位于 .root
内,然后过滤它们,仅返回那些没有祖先的 .container
,或者有一个祖先.container
这是 .root
.
Here's a fiddle
关于javascript - jQuery 选择器 : do not select input in div with given class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24752346/