【问题标题】:select div with class unless it has ancestor of another class选择带有类的 div,除非它有另一个类的祖先
【发布时间】:2012-11-28 04:48:35
【问题描述】:

十分钟前问了这个问题,但意识到我使用了“父母”一词而不是“祖先”。我正在寻找指代具有特定祖先的类的东西。

如何选择所有没有特定类父级的输入?

这里我只想获取没有父类的输入

$(document).ready(function() {

    $("div:not(.not-ancestor) > input[type='text']").css('color', '#FF1200');
});​

http://jsfiddle.net/MFtv3/3/

谢谢!

【问题讨论】:

    标签: jquery


    【解决方案1】:

    您可以使用过滤器并通过使用最接近()来检查元素上方是否有父元素以及您要查找的类,如下所示:

    $("div > input[type='text']").filter(function() {
        return !$(this).closest('.not-ancestor').length;
    }).css('color', '#FF1200');
    

    FIDDLE

    编辑

    获取元素集合以供进一步使用:

    var elems = $("div > input[type='text']").filter(function() {
                    return !$(this).closest('.not-ancestor').length;
                });
    
    elems.css('color', 'red');
    elems.each(function(idx, elem) {
        $(elem).data('index', idx);
    });
    

    【讨论】:

    • 谢谢!但是回报有什么用。如何将其更改为 if 语句?好像它没有祖先,然后把它变成红色?
    • 你看到附上的小提琴了吗?它基本上是一个 if 语句,过滤掉具有该类祖先的元素。要过滤另一种方式,只需删除 "return" 之后的 not (!) ?
    • 我想我只是不理解return,除了从函数返回一个值..
    • 它返回那个 css。但是如果我想对满足(或不满足)该过滤器的元素做多件事怎么办?例如,如果我选择的这些元素没有特定类的祖先,我想将它们更改为红色并将变量 pass 更改为 false..?
    • 如果您需要过滤后的元素集合,您总是可以将它们存储在变量中吗?我会把它添加到我的答案中!至于变量,您需要解释一下,因为您不能为每个元素设置一个变量,但是如果存在符合某些条件的元素等,您可以设置一个变量?
    猜你喜欢
    • 2012-12-02
    • 2011-07-29
    • 2019-06-17
    • 1970-01-01
    • 2021-02-05
    • 2022-01-22
    • 2019-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多