5 回答
TA贡献1815条经验 获得超13个赞
我认为其他人不明白你真正想要什么,我从你的问题中了解到你想要为你的评级系统提供突出显示功能,这是一个例子
// using event delegation to get the current mouse hovered star
document.querySelector("h2").onmouseover = function(e) {
// only if the element is of type `<i>`
if(e.target.nodeName === "I") {
// get the rating
var rating = e.target.getAttribute("data-rating");
// looping over the `<i>` elements and color them the correct way
// so only from 0 to the current rating are yellow and the rest
// are black and that makes sure the highlighting is updated even
// if the user keeps moving over the stars
Array.prototype.forEach.call(this.children, (c, i) => c.style.color = i < rating ? "yellow" : "black");
}
}
// reset the color of all the stars
document.querySelector("h2").onmouseleave = function() {
Array.prototype.forEach.call(this.children, c => c.style.color = "black");
}
<script src="https://kit.fontawesome.com/a076d05399.js"></script>
<h2>
<i class="fas fa-star" data-rating="1"></i>
<i class="fas fa-star" data-rating="2"></i>
<i class="fas fa-star" data-rating="3"></i>
<i class="fas fa-star" data-rating="4"></i>
<i class="fas fa-star" data-rating="5"></i>
</h2>
TA贡献1900条经验 获得超5个赞
你可以使用 :hover psudo class 在 css 中使用背景颜色
.yourclass:hover{
background-color: yellow;
}
TA贡献1780条经验 获得超1个赞
我认为这是您要达到的效果:
$('[class="far fa-star"]').mouseenter(function () {
var target = parseInt($(this).data('rating'));
for (i = 0; i < target; i++) {
$(this).parent().children().eq(i).css('background-color', 'yellow');
}
});
$('[class="far fa-star"]').mouseleave(function () {
var target = parseInt($(this).data('rating'));
for (i = 0; i < target; i++) {
$(this).parent().children().eq(i).css('background-color', 'transparent');
}
});
TA贡献1799条经验 获得超6个赞
你可以使用 :hover psudo class 在 css 中使用背景颜色
.yourclass:hover{
background-color: yellow;
}
或者使用添加事件监听器
添加回答
举报