你好我接下来有一些jQuery的问题。开头我的标记看起来像这样:
<ul>
<li>...</li>
<li>...</li>
<li>...</li>
<li>...</li>
<li class="active">...</li>
</ul>
<ul>
<li>...</li>
<li>...</li>
<li>...</li>
<li>...</li>
<li>...</li>
</ul>
<ul>
<li>...</li>
<li>...</li>
<li>...</li>
<li>...</li>
<li>...</li>
</ul>
在jquery中,我收集了所有'ul'元素保存在变量中,例如。 contElems。在这个变量中,我发现li与class有效,然后我尝试获得下一个elem。代码如下所示:
contElems.find('li.active').next();
当活动的li不是ul中的最后一个但是当它在ul中的最后一个时,它起作用next()返回-1。我的代码出了什么问题?我怎样才能使它工作?:)
答案 0 :(得分:1)
你能做的是:
contElems.find('li.active').siblings().first();
即使匹配的ul
是最后一个,你确保你得到1个兄弟...
答案 1 :(得分:0)
因为li.active
之后没有下一个元素。如果您只是尝试访问li.active
,请使用contElems.find('li.active')
。
您期待什么行为?
答案 2 :(得分:0)
如果它是最后一个,那么就没有next()
,所以你会得到一个假值。就个人而言,如果我写了next()
,我会让它返回null
,但显然已经确定返回值-1
意味着没有下一个元素。
答案 3 :(得分:0)
描述:获取匹配元素集中每个元素的紧随其后的兄弟。如果提供了选择器,则仅当它与该选择器匹配时,它才会检索下一个兄弟。
最后一个元素没有“紧跟兄弟姐妹”。
您可以尝试this:
function getNext(contElems) {
var next = contElems.find('li.active').next();
if (next != undefined && next != null && next != -1 && next.length > 0)
return next;
var list = contElems.find('li'),
eq = list.index(contElems.find('li.active'));
next = list.eq(eq + 1); return next;
}
答案 4 :(得分:0)
.next()
找到下一个兄弟(同一个父母)。如果你想在下一个li
(这是堂兄而不是兄弟姐妹)中找到ul
,你可以这样做:
var el = contElems.find('li.active').next();
if (el.length == 0) {
el = contElems.find('li.active').closest('ul').next().find('li:first');
}
if (el.length == 0) {
alert("Last li is active!");
}