jQuery下一步返回-1
您好,接下来我对jQuery有一些问题。首先,我有如下的标记:jQuery下一步返回-1,jquery,html,Jquery,Html,您好,接下来我对jQuery有一些问题。首先,我有如下的标记: <ul> <li>...</li> <li>...</li> <li>...</li> <li>...</li> <li class="active">...</li> </ul> <ul> <li>...</li> <l
<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>
contElems.find('li.active').next();
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!");
}
当活动li在ul中不是最后一个,但在ul中是最后一个时,next()返回-1。我的代码有什么问题?我怎样才能使它工作呢?:)因为在
li.active之后没有下一个元素。如果您只是试图访问li.active
,请使用contellems.find('li.active')
您期望的是什么行为?如果是最后一个,那么就没有next()
一个,因此您会得到一个错误的值。就个人而言,如果我编写了next()
,我会让它返回null
,但显然,返回值-1
意味着没有下一个元素。来自:
描述:获取匹配元素集中每个元素紧跟其后的同级。如果提供了选择器,则仅当它与该选择器匹配时,才会检索下一个同级
最后一个元素没有“紧随其后的兄弟元素”
您可以尝试:
您可以做的是:
contElems.find('li.active').siblings().first();
这样,即使匹配的ul
是最后一个,您也可以确保得到1个兄弟姐妹….next()
查找下一个兄弟姐妹(同一父级)。如果您想在下一个ul
中找到li
(它是表亲而不是兄弟姐妹),您可以这样做:
<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>
contElems.find('li.active').next();
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!");
}
当然,这正是它的工作方式。。next()
只查看选定元素的同级,而不是从中派生选定元素的集合。您需要测试它的长度是否为0,在这种情况下,移动到下一个ul。“获取匹配元素集中每个元素紧跟其后的同级。如果提供了选择器,则仅当它与该选择器匹配时才会检索下一个同级。”next()
在这种情况下实际上不会返回-1
index()
可能在某个地方涉及。@user1785951当li.active
是最后一个时,您想要什么输出?你想做什么?1来自哪里.next()
返回包含元素或不包含元素的jQuery对象。不管怎样,它都是一个类似数组的对象,而不是-1。。。