nextAll(),prevAll(),next()和prev()不返回结果

时间:2018-11-13 17:52:21

标签: jquery

这是我的js模块:

let rating = (() => {

    let rate = (elem) => {
        if($(elem).hasClass('checked'))
            unmarkStars($(elem))
        else
            markStars($(elem))
    }

    let unmarkStars = (elem) => {
        console.log(elem.nextAll('.fa-star'))
        elem.nextAll('.fa-star').removeClass('checked')
    }

    let markStars = (elem) => {
        console.log(elem.prevAll('.fa-star'))
        elem.prevAll('.fa-star').addClass('checked')
    }

    return {
        rate: rate
    }

})()

当我点击此ul中的元素时:

<ul id="rating-select">
    <li><span onclick="rating.rate(this)" class="fa fa-star checked"></span></li>
    <li><span onclick="rating.rate(this)" class="fa fa-star checked"></span></li>
    <li><span onclick="rating.rate(this)" class="fa fa-star checked"></span></li>
    <li><span onclick="rating.rate(this)" class="fa fa-star checked"></span></li>
    <li><span onclick="rating.rate(this)" class="fa fa-star "></span>
    </li>
</ul>

控制台中的结果为空。似乎nextAll都没有nextPrev返回任何结果。我用红色jQuery文档,搜索了可能是什么问题但仍然无法解决的问题。对我来说似乎还好。我在这里做什么错了?

1 个答案:

答案 0 :(得分:1)

nextAllprevAll方法分别将同级next和prev返回。您应该使用li方法选择父parent,然后选择下一个/上一个li,最后找到.fa-star

elem.parent().nextAll('li').find('.fa-star')

elem.parent().prevAll('li').find('.fa-star')