这是我的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
文档,搜索了可能是什么问题但仍然无法解决的问题。对我来说似乎还好。我在这里做什么错了?
答案 0 :(得分:1)
nextAll
和prevAll
方法分别将同级next和prev返回。您应该使用li
方法选择父parent
,然后选择下一个/上一个li
,最后找到.fa-star
。
elem.parent().nextAll('li').find('.fa-star')
elem.parent().prevAll('li').find('.fa-star')