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')));
});