Javascript(jQuery):next()给出的是“li.next()”而不是“li”

6l7fqoea  于 2023-06-05  发布在  jQuery
关注(0)|答案(3)|浏览(499)

令人困惑的标题,是吧?我尽力解释了。
我的意思是,如果我有这样的菜单:

<ul>
    <li> Home </li>
    <li class="current"> Portfolio </li>
    <li> Store </li>
    <li> About </li>
</ul>

然后使用.next()方法从当前元素中获取下一个元素:

$('ul li.current').next()

结果选择器是:

ul li.current.next()

而不是真实的的选择器。我的意思是,我不能用CSS来定位ul li.current.next()(因此它不是一个“真实的的”选择器)。真实的的选择器看起来像ul li
有什么方法可以得到下一个元素的“真实的”选择器吗?

9bfwbjaz

9bfwbjaz1#

如果你想要等效的CSS选择器,它应该是:

ul li.current + li

请参阅:相邻同级选择器

**注意:**IE6不支持。

还要注意,jQuery并不使用CSS选择器来匹配所有元素。选择器语法与CSS很相似(它是一个超集),因为它似乎是最自然的方式。它使用浏览器提供的方法(例如querySelectorAll),但它也必须 * 遍历 * DOM以找到元素。
例如,你永远不能将$('td').closest('tr')与CSS匹配,因为你不能用CSS“向上移动”。
我希望这回答了你的问题,如果没有,请澄清。

avkwfej4

avkwfej42#

$('ul li.current').next()将返回下一个<li>。它会回来的

<li> Store </li>
g6ll5ycj

g6ll5ycj3#

这个方法的作用是:

$(document).ready(function() {
  var $li = $("ul li.current").next();
  $li.css("font-weight", "bold");
});

或者你可以跳过var赋值,像这样访问它:

$("ul li.current").next().css("text-decoration", "underline");

相关问题