【发布时间】:2011-02-11 11:58:49
【问题描述】:
我在 UL 中有大量 LI,每个 LI 都有一个唯一的 ID。
给定两个 ID,选择两个对应的 LI、和介于两者之间的所有 LI 的最佳方法是什么?
谢谢!
【问题讨论】:
我在 UL 中有大量 LI,每个 LI 都有一个唯一的 ID。
给定两个 ID,选择两个对应的 LI、和介于两者之间的所有 LI 的最佳方法是什么?
谢谢!
【问题讨论】:
你可以这样做:
$('#id').nextUntil('#id2').andSelf().add('#id2')
重要的是要注意.nextUntil() 确实不包含它要到达的元素,它会在它之前的元素处停止。要添加该元素,您需要在末尾调用.add(selector)。
您还需要一个 .andSelf() 来包含 first 元素
2017 年 8 月更新
jQuery 方法 .andSelf() 现在在 jQuery 1.8+ 中被弃用,使用 .addBack() 代替添加第一个选择。此外,如果最后一个元素 (#id2) 优先于选择中的第一个元素 (#id1),则可以使用.prevUntil()。比较两个元素的.index() 以确定它们在文档中的顺序。
【讨论】:
.addSelf() 将包含原始 ID,而不是结束元素,您仍然需要 .add() 作为结束 ID
.add(),4 将不包括在内,.nextUntil() 不包括在内。来自文档:“返回的新 jQuery 对象包含所有以下兄弟姐妹,但不包括 .nextUntil() 选择器匹配的兄弟姐妹。”
http://api.jquery.com/nextUntil/
给定一个表示一组 DOM 元素的选择器表达式,
.nextUntil()方法在 DOM 树中搜索这些元素的后继元素,当它到达与方法的参数匹配的元素时停止。返回的新 jQuery 对象包含所有后续兄弟姐妹,但不包括.nextUntil()参数匹配的兄弟姐妹。如果选择器不匹配或未提供,则将选择所有后续兄弟;在这些情况下,它会选择与未提供过滤器选择器时
.nextAll()方法相同的元素。从 jQuery 1.6 开始,可以将 DOM 节点或 jQuery 对象而不是选择器传递给
.nextUntil()方法。该方法可选地接受一个选择器表达式作为其第二个参数。如果提供了此参数,则将通过测试它们是否匹配来过滤元素...
【讨论】:
选择 UL 之间的所有 LI
$(document).ready(function(){
$("li[ID*=ids]").css("bacground-color","red");// contian common world ex ids1
});
【讨论】:
<li> 以及包含id 的ids...这根本无法回答问题。