我有一个无序列表.
<ul>
<li class="foo">Baz</li>
<li>Select Me!</li>
<li>Select Me!</li>
<li>Select Me!</li>
<li class="bar">Baz</li>
<li>Don't Select Me</li>
<li>Red Herring List Item</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
如何使用jQuery在类foo和bar的列表项之间选择列表项?我不知道任何列表项的内容.我也不知道有多少列表项被选中,所以我不能依靠计数.
dot*_*joe 28
$('li.foo').nextUntil('li.bar')
Run Code Online (Sandbox Code Playgroud)
gdo*_*ica 12
var $elements = $('.bar').prevUntil('.foo');
Run Code Online (Sandbox Code Playgroud)
或者另一种方式:
var $elements = $('.foo').nextUntil('.bar');
Run Code Online (Sandbox Code Playgroud)
如果您有兴趣知道它是如何实现的,请查看源代码:
nextUntil: function(elem, i, until) {
return jQuery.dir(elem, "nextSibling", until);
},
prevUntil: function(elem, i, until) {
return jQuery.dir(elem, "previousSibling", until);
},?
dir: function(elem, dir, until) {
var matched = [],
cur = elem[dir];
while (cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery(cur).is(until))) {
if (cur.nodeType === 1) {
matched.push(cur);
}
cur = cur[dir];
}
return matched;
},?
Run Code Online (Sandbox Code Playgroud)