我正在创建一个带箭头键功能的自定义下拉菜单,并按:contains
进行过滤。
我似乎无法通过以下代码。发生的事情是我需要在当前悬停的li上开始选择,然后继续前进到具有类match
的下一个或上一个li。
我的以下代码正确启动,但即使它有.next('.match')
它也不会传递<li>
的没有类(match
)或是(隐藏)< / p>
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>
答案 0 :(得分:2)
您的next()
功能没有按照您的想法执行。它查看下一个元素,只有 匹配它,如果它生成给定的选择器。否则返回一个空的jQuery对象。
相反,您希望nextAll()
查看所有未来的兄弟姐妹,然后使用first()
方法(或:first
)选择器匹配第一个。
你可以在这里看到这个; http://jsfiddle.net/DH3hG/
回答关于next()
是否考虑隐藏元素的问题; 是确实如此。将任何插入到DOM中的内容都考虑在内。