【问题标题】:JQuery selector helpjQuery 选择器帮助
【发布时间】:2011-04-03 23:11:20
【问题描述】:

使用 JQuery,如何在 id 为 y 的元素中选择所有类别为 x 的元素?

【问题讨论】:

  • 你想用这些元素做什么?只需选择它们?
  • id 不应该总是唯一的吗?
  • @Catfish 不,但我知道如何做剩下的事情。我只是对选择感到困惑。
  • @John 看来您对我的问题感到困惑。我有一个 id 为 y 的元素。有许多元素是该元素的子元素。一些孩子有 X 班。我想选择所有 X 班的孩子。
  • 对不起,我看错了问题。

标签: jquery css css-selectors descendant


【解决方案1】:

$('#y .x') 应该为你做。

请注意,这将选择类 x 的所有后代,而不仅仅是子代。

【讨论】:

  • +1 为简洁起见(具有讽刺意味的是,我不能将其作为评论:“评​​论必须至少有 15 个字符的长度。”)
【解决方案2】:

选择 id 为“y”的元素的类 x 的所有后代。

$("#y .x").each(function () {
   $(this) <- your element
});

选择 id 为“y”的元素的类 x 的所有子元素。

$("#y > .x").each(function () {
   $(this) <- your element
});

【讨论】:

  • 第一个代码与$("#y").find(".x")相同,第二个与$("#y").find("&gt; .x")相同
  • @BrunoLM +1 很好的补充,不过我更喜欢我的方法。另外,如果他想改用前.click,那么无论如何都会删除.each
【解决方案3】:

使用$("#id .class")

【讨论】:

    【解决方案4】:
    $("#x .y").doSomething();
    
    $(".y", "#x").doSomething();
    
    $("#x").find(".y").doSomething();
    

    对于直系子女:

    $("#x > .y").doSomething();
    
    $("#x").children(".y").doSomething();
    

    在这里查看我的问题,它会告诉您更多信息并涵盖性能。 What is the fastest method for selecting descendant elements in jQuery?

    【讨论】:

    • +1 - 彻底的答案。只是想我会指出,在您的第二个示例中,您不需要为上下文传递 jQuery 对象。你可以只传递字符串"#x"。 jQuery 在幕后将其翻转为您的第三个版本。 :o)
    【解决方案5】:

    如果您有 id='y' 的元素 1,并且您想要所有具有 class='x' 的 [立即] 子元素

    $("#y > .x").each(function(){stuff]);
    

    如果你想要 id='y' 的所有后代(不仅仅是立即),那么你会这样做:

    $("#y").find(".x").each(function(){stuff});
    

    显然,如果您知道元素类型是什么,您可以通过添加元素类型来使其更智能(更好)。例如,如果您只想要子类型,那么:

    $("#y > a.x").each(function(){stuff]);
    

    希望这就是你的意思。

    【讨论】:

    • 使用.children() 不会给你所有的后代。马上。您正在考虑.find(),它将返回所有匹配的后代。
    猜你喜欢
    • 2011-09-17
    • 2011-04-27
    • 2011-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多