2017-11-28 16 views
1

スターの上にカーソルを置いたときに評価の星を表示しています。これまでのところツールチップを表示したいのですが、これを試しました。jqueryに問題があります。そのクラスを書く方法を考えていない。私は入力タイプのラジオを使用し、どのようにjqueryでこの属性をロードするのでしょうかというラベルを誰も私にその機能を達成するように提案できます。あなたの問題は、入力フィールドは、あなたが実際にホバリングしているものではありません、それはラベルだという事実である事前に入力フィールド上でマウスのホバー表示のツールチップ

おかげで...

$(document).ready(function() { 
 
    $("input[name=rating]").on('mouseenter', showBox); 
 
    $("input[name=rating]").on('mouseleave', hideBox); 
 

 
    function showBox(e) { 
 
     var x = e.pageX - 80; 
 
     var y = e.pageY + 20; 
 
     $('#tooltip_block').fadeIn(); 
 
     $('#tooltip_block').offset({ left: x, top: y }); 
 
    } 
 

 
    function hideBox() { 
 
     $('#tooltip_block').fadeOut(); 
 
    } 
 
});
.rating_widgets { 
 
    display: flex; 
 
    justify-content: center; 
 
    margin-top: 25px; 
 
} 
 

 
.rating { 
 
    border: none; 
 
    float: left; 
 
} 
 

 
    .rating > input { 
 
     display: none; 
 
    } 
 

 
    .rating > label:before { 
 
     margin: 5px; 
 
     font-size: 24px; 
 
     font-family: FontAwesome; 
 
     display: inline-block; 
 
     content: "\f005"; 
 
    } 
 

 
    .rating > .half:before { 
 
     content: "\f089"; 
 
     position: absolute; 
 
    } 
 

 
    .rating > label { 
 
     color: #ddd; 
 
     float: right; 
 
    } 
 

 
    .rating > input:checked ~ label, 
 
    .rating:not(:checked), 
 
    .rating:not(:checked) { 
 
     color: #FFD700; 
 
    } 
 

 
    .rating > input:checked, 
 
    .rating > input:checked, 
 
    .rating > input:checked ~ label, 
 
    .rating > input:checked ~ label { 
 
     color: #FFED85; 
 
    } 
 

 
#tooltip_block { 
 
    display: none; 
 
    position: absolute; 
 
    z-index: 1; 
 
    color: #ffffff; 
 
    background-color: #000; 
 
}
<div class="rating_widgets"> 
 
    <fieldset class="rating"> 
 
     <input type="radio" id="star5" name="rating" /> 
 
     <label class="full" for="star5"></label> 
 
     <input type="radio" id="star4half" name="rating" value="4 and a half" /> 
 
     <label class="half" for="star4half"></label> 
 
     <input type="radio" id="star4" name="rating" value="4" /> 
 
     <label class="full" for="star4"></label> 
 
     <input type="radio" id="star3half" name="rating" value="3 and a half" /> 
 
     <label class="half" for="star3half"></label> 
 
     <input type="radio" id="star3" name="rating" value="3" /> 
 
     <label class="full" for="star3"></label> 
 
     <input type="radio" id="star2half" name="rating" value="2 and a half" /> 
 
     <label class="half" for="star2half"></label> 
 
     <input type="radio" id="star2" name="rating" value="2" /> 
 
     <label class="full" for="star2"></label> 
 
     <input type="radio" id="star1half" name="rating" value="1 and a half" /> 
 
     <label class="half" for="star1half"></label> 
 
     <input type="radio" id="star1" name="rating" value="1" /> 
 
     <label class="full" for="star1"></label> 
 
     <input type="radio" id="starhalf" name="rating" value="half" /> 
 
     <label class="half" for="starhalf"></label> 
 
    </fieldset> 
 
</div> 
 
<div id="tooltip_block"> 
 
    <div class="top_bar">4.2 stars out of 5 stars</div> 
 
</div>

答えて

2

fadeIn()/ fadeOut()をshow()/ hide()に置き換えたことに注意してください。マウス移動はフェードアニメーションをキューに入れ、マウスをスターの周りに移動するとちらつきを感じるため)。

$(document).ready(function(){ 
 
    $("label").hover(showBox, hideBox); 
 

 
    function showBox(e) { 
 
    var x = e.pageX - 80; 
 
    var y = e.pageY + 20; 
 

 
\t \t $('#tooltip_block .rating_value').html($('#' + $(this).attr('for')).val()); 
 
    $('#tooltip_block').show(); 
 
    $('#tooltip_block').offset({ left: x, top: y }); 
 
    } 
 
    
 
    function hideBox(){ 
 
    \t $('#tooltip_block').hide(); 
 
    } 
 
});
.rating_widgets { 
 
    display: flex; 
 
    justify-content: center; 
 
    margin-top: 25px; 
 
} 
 
.rating { 
 
    border: none; 
 
    float: left; 
 
} 
 
.rating > input { display: none; } 
 
.rating > label:before { 
 
    font-size: 24px; 
 
    font-family: FontAwesome; 
 
    display: inline-block; 
 
    content: "\f005"; 
 
} 
 
.rating > .half:before { 
 
    content: "\f089"; 
 
    position: absolute; 
 
    margin-left: 10px; 
 
} 
 
.rating > label { 
 
    color: #ddd; 
 
float: right; 
 
margin-left: 10px; 
 
} 
 
.rating > input:checked ~ label, 
 
.rating:not(:checked), 
 
.rating:not(:checked){ color: #FFD700; } 
 

 
.rating > input:checked, 
 
.rating > input:checked, 
 
.rating > input:checked ~ label, 
 
.rating > input:checked ~ label { 
 
\t color: #FFED85; 
 
} 
 
#tooltip_block { 
 
\t display: none; 
 
\t position: absolute; 
 
\t z-index: 1; 
 
\t color: #ffffff; 
 
\t background-color: #000; 
 
}
<script src="https://use.fontawesome.com/a2e210f715.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="rating_widgets"> 
 
\t <fieldset class="rating"> 
 
\t \t <input type="radio" id="star5" name="rating" value="5"/> 
 
\t \t <label class = "full" for="star5"></label> 
 
\t \t <input type="radio" id="star4half" name="rating" value="4.5" /> 
 
\t \t <label class="half" for="star4half"></label> 
 
\t \t <input type="radio" id="star4" name="rating" value="4" /> 
 
\t \t <label class = "full" for="star4"></label> 
 
\t \t <input type="radio" id="star3half" name="rating" value="3.5" /> 
 
\t \t <label class="half" for="star3half"></label> 
 
\t \t <input type="radio" id="star3" name="rating" value="3" /> 
 
\t \t <label class = "full" for="star3"></label> 
 
\t \t <input type="radio" id="star2half" name="rating" value="2.5" /> 
 
\t \t <label class="half" for="star2half"></label> 
 
\t \t <input type="radio" id="star2" name="rating" value="2" /> 
 
\t \t <label class = "full" for="star2"></label> 
 
\t \t <input type="radio" id="star1half" name="rating" value="1.5" /> 
 
\t \t <label class="half" for="star1half"></label> 
 
\t \t <input type="radio" id="star1" name="rating" value="1" /> 
 
\t \t <label class = "full" for="star1"></label> 
 
\t \t <input type="radio" id="starhalf" name="rating" value="0.5" /> 
 
\t \t <label class="half" for="starhalf"></label> 
 
\t </fieldset> 
 
</div> 
 
<div id="tooltip_block"> 
 
\t <div class="top_bar"><span class="rating_value"></span> stars out of 5 stars</div> 
 
</div>

編集

これは、ホバーボックス

$('#tooltip_block .rating_value').html($('#' + $(this).attr('for')).val()); 

に値を挿入するのコードで、あなたはそれらを取り除くしたい場合は、その行を削除のjavacript(おそらく削除する必要があります

<span class="rating_value"></span> 

ホバーのdivからも同様に、jsのビットなしで目的を果たさない)。私はあなたのCSSを更新 - 限り星わたってるしき現れてホバーなど

編集#2

。事はあなたが効果的にあなたの星が右互いのほかにまで押して表示さの要素を作る

.rating > label:before { 
    margin: 5px; 
    ... 
} 

を設定してあります。あなたは

.rating > label { 
    ... 
    margin-left: 10px; 
} 

.rating > .half:before { 
    ... 
    margin-left: 10px; 
} 

は、代わりに私が値を取得しています

+0

ホバーはまた、私は削除する方法[値] 'したくないラベル要素の周りに余白を作成するために使用することができます。 – Husna

+0

私は星の真ん中にマウスを置いてもツールチップを取得しますが、スターのツールチップにホバーを正確に表示したいと思っています。 – Husna

+0

@husnaあなたのホバーボックスに値を追加する行についての情報を追加しました – Kristaps

関連する問題