通过选择带有类的元素来获取下一个元素

时间:2011-11-12 22:23:05

标签: javascript jquery

我有一个实时搜索,列表元素被赋予hover类我然后在按下向下箭头并添加hover类后,尝试在悬停类之后获取下一个li元素那个元素。这就是我所拥有的:

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

它不会向下一个元素添加一个类。它找到了当前的类就好了。不确定我做错了什么。欣赏它!

5 个答案:

答案 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')可能没有做你想做的事。

由于currentli标记的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元素