Javascript jQuery选择器:不要在具有给定类的div中选择输入
我有以下示例代码:Javascript jQuery选择器:不要在具有给定类的div中选择输入,javascript,jquery,html,jquery-selectors,Javascript,Jquery,Html,Jquery Selectors,我有以下示例代码: <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,
<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中选择输入
起点是“提交”,其中是单击操作;我得到了.container$this.closest.container,现在我需要知道如何只选择未嵌套的输入:
如果我在submit1上,我会得到输入a,b,而不是a,b,c,d。如果我在submit2上,我会得到c,d
HTML结构可能会有所不同,因此我无法使用准确的选择器,如div>input,…。您没有任何不是.container的后代的输入,如果要获取.root.container内部的所有输入,除了child.containers内部的输入,可以执行以下操作:
var $inputs = $('.root').find('input').filter(function() {
return !$(this).closest('.container').length
|| $(this).closest('.container').hasClass('root');
});
因此,您要查找.root中的所有输入,然后对它们进行筛选,只返回那些没有祖先.container或没有祖先.container(即.root)的输入
最后,你们给我指出了正确的方向——解决方案,我一开始想要的是: @billyonecan说得对,输入不是后代,所以google给我指出了另一个函数-。children,它接受选择器作为过滤器,所以我赢了:-更多的是小提琴
而且-感谢您的帮助您的问题是关于jQuery选择器的,为什么标题上会显示CSS?您没有任何不是其后代的输入。container@Barmar对不起,太快了
var container = $('#submit-2').closest('div.container');
var result = $('#result');
container.children(':not(div.container)').find(':input:not([type="submit"])').each(function (k, v) {
result.append($('<li/>').text('found: ' + $(v).attr('name')));
});