1
私のアプリケーションで評価星システムを実装しましたが、2つの問題があります。評価星は、ホバリングと選択解除で問題が発生します
まず、選択した星の上にマウスを乗せていると、それは宙に浮かんでいることを示していますが、選択されたことを示すはずです。私は選択されたクラスのz-index
を変更しようとしましたが、それは助けになりませんでした
第二に、私は5星から1星に変更しようとすると、星を選択解除していません。
<ul class="rating-stars">
<li>
<input id="rating_1" name="rating" type="radio" value="1">
<label class="rating is-active" for="rating_1" title="1 Star">
<span class="text">1 Star</span>
</label>
<li>
<input id="rating_2" name="rating" type="radio" value="2">
<label class="rating is-active" for="rating_2" title="2 Star">
<span class="text">2 Star</span>
</label>
<li>
<input id="rating_3" name="rating" type="radio" value="3">
<label class="rating is-active" for="rating_3" title="3 Star">
<span class="text">3 Star</span>
</label>
<li>
<input id="rating_4" name="rating" type="radio" value="4">
<label class="rating" for="rating_4" title="4 Star">
<span class="text">4 Star</span>
</label>
<li>
<input checked="checked" id="rating_5" name="rating" type="radio" value="5">
<label class="rating" for="rating_5" title="5 Star">
<span class="text">5 Star</span>
</label>
</ul>
$(".rating-stars li").mouseenter(function() {
$(this).children(".rating").addClass("is-hovered");
$(this).prevAll("li").children(".rating").addClass("is-hovered");
}).mouseleave(function() {
$(".rating-stars li").each(function() {
$(this).children(".rating").removeClass("is-hovered");
});
});
JS:
$(".rating-stars li").click(function() {
$(".rating-stars li").children(".rating.current").removeClass("is-active");
$(this).children(".rating").addClass("is-active")
$(this).prevAll("li").children(".rating").addClass("is-active");
});
おっとの選択を解除するには...ちょうど私のミスを実現。しかし、最初の質問に答えなかった...選択されたアイテムの上にホバーする間に、ホバークラスが選択されたクラスを表示する理由 – user4756836
選択したものにホバークラスを追加したくない場合にホバークラスを追加したのでセレクタに – guradio
が見つかりました!最後の質問...どこでも.childrenを使用するのは面倒です。少し清潔にすることは可能でしょうか? – user4756836