Reputation: 981
I have a CSS and jQuery code. What I want to do is:
On star mouse enter, fade in
. If the star with id=4
is hovered, fade in all stars before 4, if till 3, then only fade in first 3 stars. Here is my code:
<script type="text/javascript">
$(document).ready(function(){
var rating = $('#rating').val();
$('.giveRating').click(function(){
var clicked = $(this).attr('id');
$('#rating').val(clicked);
$(this).css({opacity: 1});
$(this).prevAll('.giveRating').css({opacity:1});
})
//Change css on mouseEnter to new CSS
$('.giveRating').mouseenter(function(){
$(this).prevAll('.giveRating').css({opacity:1});
$(this).css({opacity: 1});
});
//Change CSS on mouseLeave to old CSS
$('.giveRating').mouseleave(function(){
$('.giveRating').css({opacity: 0.5});
});
});
</script>
echo '<img class="giveRating" id="1" src="'.url('images/pages/reviews/star.png').'">';
echo '<img class="giveRating" id="2" src="'.url('images/pages/reviews/star.png').'">';
echo '<img class="giveRating" id="3" src="'.url('images/pages/reviews/star.png').'">';
echo '<img class="giveRating" id="4" src="'.url('images/pages/reviews/star.png').'">';
echo '<img class="giveRating" id="5" src="'.url('images/pages/reviews/star.png').'">';
Upvotes: 2
Views: 103
Reputation: 16116
This should give you an idea of how to start.
$(document).ready(function(){
var rating = $('#rating').val();
$('.giveRating').click(function(){
var clicked = $(this).attr('id');
$('#rating').val(clicked);
})
//Change css on mouseEnter to new CSS
$('.giveRating').mouseenter(function(){
$(this).prevAll('.giveRating').css({opacity:1});
$(this).css({opacity: 1});
});
//Change CSS on mouseLeave to old CSS
$('.giveRating').mouseleave(function(){
$('.giveRating').css({opacity: 0.5});
});
});
Update (Click functionality)
$(document).ready(function(){
var timeOut;
var hasClicked;
var rating = $('#rating').val();
$('.giveRating').click(function(){
hasClicked = true;
var clicked = $(this).attr('id');
clicked.prevAll('.giveRating').css({opacity:1});
clicked.css({opacity: 1});
$('#rating').val(clicked);
})
//Change css on mouseEnter to new CSS
$('.giveRating').mouseenter(function(){
clearTimeout(timeOut);
$(this).prevAll('.giveRating').css({opacity:1});
$(this).css({opacity: 1});
$(this).nextAll('.giveRating').css({opacity:0.5});
});
//Change CSS on mouseLeave to old CSS
$('.giveRating').mouseleave(function(){
if(!hasClicked){
timeOut = setTimeout(function(){
$('.giveRating').css({opacity: 0.5});
},200);
}
hasClicked = false;
});
});
Update 3
Upvotes: 2