Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery下一步返回-1_Jquery_Html - Fatal编程技术网

jQuery下一步返回-1

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

您好,接下来我对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>
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。。。