2011-11-12 41 views
0

我有一个实时搜索和一个列表元素给出了一个类hover然后我试图在按下向下箭头并添加hover该元素的类。这是我有:通过选择具有类的元素获取下一个元素

if(e.keyCode == 40){ 
     var current = results.find('li.hover'); 
     current.removeClass(); 
     current.parent().next('li').addClass('hover'); 
     return false; 
    } 

它只是不会添加到下一个元素的类。它发现当前的课程很好。不知道我做错了什么。欣赏它!

+0

你可以张贴HTML – Rafay

+1

我们可以看到HTML结构,好吗? – lonesomeday

+0

'results'的值是多少? – Ryan

回答

3

使用e.which,不e.keyCode。 jQuery的标准化属性(IE不支持e.keyCode):

if(e.which == 40){ 

至于你的选择,试试这个:

results.find('li.hover').removeClass().next('li').addClass('hover') 

.next()查找下一个同级的选择匹配,所以没有必要致电.parent()

+0

完美工作并感谢有关'which'的信息。 – mikelbring

2

您正在寻找LI.hover,之后您将转到父母(即UL),然后选择UL之后的下一个LI。

更改此:

current.parent().next('li').addClass('hover'); 

要:

current.next('li').addClass('hover'); 
0

current.parent().next('li')可能没有做你想做的。

由于currentli标签的jQuery对象,我假设它的父项是ul标签。如果是这种情况,那么next('li')正在寻找ul标签的第一个兄弟,这是li标签,它永远不会找到。

目前还不清楚哪个li您想添加悬停类,所以我不确定推荐什么来做你想做的。

0

难道你只是想这样做:

if(e.keyCode == 40){ 
    var current = results.find('li.hover'); 
    current.removeClass(); 
    current.next('li').addClass('hover'); 
    return false; 
} 

没有父()

0

current.nextSibling应该指的是下一个li元素列表

相关问题