0

我正在制作一个带有箭头键功能的自定义下拉菜单,并被:contains.

我似乎无法通过以下代码。发生的事情是我需要在当前悬停的 li 处开始选择,然后继续到具有 class 的下一个或上一个 li match

我的以下代码正确启动,但即使它有.next('.match')它也不会通过<li>没有类(match)或(隐藏)的

该功能是否会next()在隐藏元素上中断?

jQuery代码

 $('.dropdown_shell.opened li.match.hovered')
     .next('.match')
     .addClass('hovered')
     .siblings()
     .removeClass('hovered');

html

<ul class="scroll">
     <li class="selected default match">None</li>
     <li class="" style="display: none;">For Sale</li>
     <li class="match">For Rent</li>
     <li class="" style="display: none;">For Lease</li>
     <li class="match hovered">Sale or Lease</li>
     <li class="match">New Listing</li>
     <li class="match">Open House</li>
</ul>
4

1 回答 1

2

你的next()功能没有做你认为的那样。它查看下一个元素,并且在它创建给定选择器时才匹配它。否则它返回一个空的 jQuery 对象。

相反,您想要nextAll()查看所有未来的兄弟姐妹,然后使用first()方法(或:first)选择器来匹配第一个。

你可以在这里看到这个工作;http://jsfiddle.net/DH3hG/

回答您关于是否next()考虑隐藏元素的问题;的。任何插入到 DOM 中的东西都会被考虑。

于 2013-08-24T15:26:20.480 回答