Javascript (jQuery):next() 给我“li.next()”代替“li”

发布于 2024-11-06 04:27:37 字数 554 浏览 0 评论 0原文

令人困惑的标题,是吧?我尽力解释它。

我的意思是,如果我有一个像这样的菜单:

<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

有没有办法获得下一个元素的“真实”选择器?

Confusing title, huh? I tried to explain it as best as i could.

What i mean is, if i have a menu like this:

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

and use the .next() method to get the next element FROM the current one:

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

the result selector is:

ul li.current.next()

instead of a real selector. I mean, i can't target ul li.current.next() with CSS (and therefore it isn't a "real" selector). The real selector would look like ul li.

Is there any way to get the "real" selector of the next element?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

胡大本事 2024-11-13 04:27:37

如果您想要等效的 CSS 选择器,则为:

ul li.current + li

请参阅:相邻同级选择器

注意: IE6 不支持

另请注意,jQuery 不使用 CSS 选择器来匹配所有元素。选择器语法与 CSS 类似(它是超集),因为它似乎是最自然的方式。它使用浏览器提供的方法(例如 querySelectorAll ),但它还必须遍历 DOM 才能找到元素。

例如,您永远无法将 $('td').closest('tr') 与 CSS 匹配,因为您无法使用 CSS“向上移动”。

我希望这能回答您的问题,如果没有,请澄清。

If you want the equivalent CSS selector, it would be:

ul li.current + li

See: Adjacent sibling selector

Note: Not supported in IE6.

Also note that jQuery does not use CSS selectors to match all the elements. The selector syntax is just similar (it is a superset) to CSS because it seemed to be the most natural way. It uses methods provided by the browser (e.g. querySelectorAll) where it can but it also has to traverse the DOM in order to find the elements.

E.g. you can never match $('td').closest('tr') with CSS as you cannot "move up" with CSS.

I hope this answers your question, if not please clarify it.

萌无敌 2024-11-13 04:27:37

$('ul li.current').next() 将仅返回下一个

  • 。它会返回
  • <li> Store </li>
    

    $('ul li.current').next() will simply return the next <li>. It will return

    <li> Store </li>
    
    九厘米的零° 2024-11-13 04:27:37

    这有效:

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

    或者您可以跳过 var 分配并像这样访问它:

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

    This works:

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

    Or you can skip the var assignment and access it like this:

    $("ul li.current").next().css("text-decoration", "underline");
    
    ~没有更多了~
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文