我有一个实时搜索,列表元素被赋予hover
类我然后在按下向下箭头并添加hover
类后,尝试在悬停类之后获取下一个li元素那个元素。这就是我所拥有的:
if(e.keyCode == 40){
var current = results.find('li.hover');
current.removeClass();
current.parent().next('li').addClass('hover');
return false;
}
它不会向下一个元素添加一个类。它找到了当前的类就好了。不确定我做错了什么。欣赏它!
答案 0 :(得分:3)
使用e.which
,而不是e.keyCode
。 jQuery规范化属性(IE不支持e.keyCode
):
if(e.which == 40){
至于你的选择器,试试这个:
results.find('li.hover').removeClass().next('li').addClass('hover')
.next()
查找与选择器匹配的下一个兄弟,因此无需拨打.parent()
。
答案 1 :(得分:2)
您正在寻找LI.hover,之后您转到父母(即UL),然后在UL之后选择下一个LI。
改变这个:
current.parent().next('li').addClass('hover');
要:
current.next('li').addClass('hover');
答案 2 :(得分:0)
current.parent().next('li')
可能没有做你想做的事。
由于current
是li
标记的jQuery对象,我认为它的父标记是ul
标记。如果是这种情况,那么next('li')
正在寻找ul
标记的第一个兄弟,它是li
标记,它永远不会找到。
我不清楚你要添加哪个li
悬停类,所以我不确定要推荐什么做你想要的。
答案 3 :(得分:0)
难道你不想这样做:
if(e.keyCode == 40){
var current = results.find('li.hover');
current.removeClass();
current.next('li').addClass('hover');
return false;
}
没有 parent()?
答案 4 :(得分:0)
current.nextSibling应引用列表中的下一个li元素