javascript - jQuery 选择器 : do not select input in div with given class

标签 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,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/

相关文章:

javascript - 输入文本后如何自动加载新页面

javascript - 需要从表单中获取输入,使用 php 进行处理,并可以选择根据答案重新加载页面

javascript - Firebug 为一个 getElementById 返回奇怪的错误

javascript - jquery同位素未捕获错误

javascript - 将一个表格列表中的单元格高度分配给另一个列表

javascript - 如何在 jointJS 的元素框内复制检查器编辑文本值 - Rappid

javascript - Bootstrap 表单仅在 Firefox 中无法正确显示

javascript - 单击 slider 下一个和上一个按钮时,我得到 $curr[action] 不是函数

html - 删除图像标签 HTML/CSS 之间的水平间隙

html - CSS :hover only affect top div of nest