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

Get the next element by selecting element with a class

本文关键字:元素 获取 下一个 选择      更新时间:2023-09-26

我有一个实时搜索,列表元素被给定一个hover类,然后我试图在按下向下箭头并将hover类添加到该元素后获得悬停类后的下一个li元素。以下是我的文件:

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

它只是不会在下一个元素中添加一个类。它可以很好地找到当前的类。不知道我做错了什么。很感激!

使用e.which,而不是e.keyCode。jQuery规范属性(IE不支持e.keyCode):

if(e.which == 40){

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

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

.next()查找与选择器匹配的下一个兄弟,因此不需要调用.parent()

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

改变:

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

:

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

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

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

我不清楚你想添加悬停类到哪个li,所以我不确定到底该推荐什么来做你想做的

难道你不想这么做吗?

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

没有parent() ?

current。nextSibling应该引用列表中的下一个li元素