jQuery - 需要删除鼠标离开时的值,但不能在鼠标输入时删除

时间:2013-09-04 07:41:46

标签: javascript jquery

我使用jquery.rateit.min.js进行星级评分,我需要考虑以下2条条件:

  1. 在鼠标离开时,应删除该值(评级为良好,平均等)。
  2. 点击星号后,除了删除鼠标后,不应删除该值。
  3. 以下是代码:

    <input type="range" min="0" max="5" value="0" step="1" id="backing1">
    <div class="rateit" id="rateitHover" data-rateit-backingfld="#backing1" data-rateit-step="1" > 
        <span class="tooltip" style="float:right; padding-left:10px;"></span>
    </div>
    
    <script type="text/javascript">
        var tooltipvalues = ['Bad', 'Poor', 'Average', 'Good', 'Excellent'];
    
        $("#rateitHover").bind('over', function (event, value) {
            $('.tooltip').text(tooltipvalues[value - 1]);
        });
    
        $("#rateitHover").bind('reset', function () {
            $('.tooltip').text(''); 
        });
    
        $("#rateitHover").bind('rated', function (event, value) {
            $('.tooltip').text('R: ' + tooltipvalues[value - 1]);
        });
    </script>
    

2 个答案:

答案 0 :(得分:2)

只需使用一个标志:

var hasBeenClicked = false;

$('.stars').on('mouseleave', function(e) {
    if(hasBeenClicked) {
        //let the stars value
    } else {
        //reset the stars
    }
});

$('.stars .star').on('click', function() {
    //set the rating
    hasBeenClicked = true;
});

答案 1 :(得分:2)

这是你在找什么?我所做的就是将一个函数绑定到mouseleave事件。

$('#rateitHover').bind('mouseleave', function() {
    var v = $('#rateitHover').rateit('value');
    if (v == 0) {
        $('.tooltip').html('');
    } else {
        $('.tooltip').html('R: ' + tooltipvalues[v - 1]);
    }
});

这是一个JSFiddle,可以看到它的实际应用:http://jsfiddle.net/9xrkr/