【问题标题】:jQuery selectors: select two elements, and all elements in betweenjQuery 选择器:选择两个元素,以及介于两者之间的所有元素
【发布时间】:2011-02-11 11:58:49
【问题描述】:

我在 UL 中有大量 LI,每个 LI 都有一个唯一的 ID。

给定两个 ID,选择两个对应的 LI、介于两者之间的所有 LI 的最佳方法是什么?

谢谢!

【问题讨论】:

    标签: jquery jquery-selectors


    【解决方案1】:

    你可以这样做:

    $('#id').nextUntil('#id2').andSelf().add('#id2')
    

    重要的是要注意.nextUntil() 确实包含它要到达的元素,它会在它之前的元素处停止。要添加该元素,您需要在末尾调用.add(selector)

    您还需要一个 .andSelf() 来包含 first 元素

    2017 年 8 月更新

    jQuery 方法 .andSelf() 现在在 jQuery 1.8+ 中被弃用,使用 .addBack() 代替添加第一个选择。此外,如果最后一个元素 (#id2) 优先于选择中的第一个元素 (#id1),则可以使用.prevUntil()。比较两个元素的.index() 以确定它们在文档中的顺序。

    【讨论】:

    • @jAndy - .addSelf() 将包含原始 ID,而不是结束元素,您仍然需要 .add() 作为结束 ID
    • @Nick:这正是他想要的。
    • @jAndy 如果你有 li 1、2、3、4,没有.add(),4 将不包括在内,.nextUntil() 不包括在内。来自文档:“返回的新 jQuery 对象包含所有以下兄弟姐妹,但不包括 .nextUntil() 选择器匹配的兄弟姐妹。”
    • 我知道,我不是要附加它,只是将它添加到表达式中
    • 这仅在#id 出现在#id2 之前时有效。 More here
    【解决方案2】:

    http://api.jquery.com/nextUntil/

    给定一个表示一组 DOM 元素的选择器表达式,.nextUntil() 方法在 DOM 树中搜索这些元素的后继元素,当它到达与方法的参数匹配的元素时停止。返回的新 jQuery 对象包含所有后续兄弟姐妹,但不包括 .nextUntil() 参数匹配的兄弟姐妹。

    如果选择器不匹配或未提供,则将选择所有后续兄弟;在这些情况下,它会选择与未提供过滤器选择器时 .nextAll() 方法相同的元素。

    从 jQuery 1.6 开始,可以将 DOM 节点或 jQuery 对象而不是选择器传递给 .nextUntil() 方法。

    该方法可选地接受一个选择器表达式作为其第二个参数。如果提供了此参数,则将通过测试它们是否匹配来过滤元素...

    【讨论】:

    • nextUntil 不考虑 OP 要求的第一个和最后一个元素。
    【解决方案3】:

    选择 UL 之间的所有 LI

     $(document).ready(function(){
                $("li[ID*=ids]").css("bacground-color","red");// contian common world ex ids1
        });
    

    【讨论】:

    • 这将选择所有<li> 以及包含idids...这根本无法回答问题。
    • 不是我的反对意见,而是根据我今天早上看到的其他答案...您需要更好地阅读问题,偏离主题或完全不正确的答案很少有帮助
    猜你喜欢
    • 1970-01-01
    • 2017-07-23
    • 2012-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-31
    • 1970-01-01
    • 2018-05-04
    相关资源
    最近更新 更多