如何使用隐藏元素处理.next()函数

时间:2013-08-24 15:24:05

标签: javascript jquery html css

我正在创建一个带箭头键功能的自定义下拉菜单,并按: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>

1 个答案:

答案 0 :(得分:2)

您的next()功能没有按照您的想法执行。它查看下一个元素,只有 匹配它,如果它生成给定的选择器。否则返回一个空的jQuery对象。

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

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

回答关于next()是否考虑隐藏元素的问题; 确实如此。将任何插入到DOM中的内容都考虑在内。