今日は Jquery の頭痛の種です。jquery でホバー イベントとクリック イベントを組み合わせようとしていますが、ホバー関数の最新の編集でクリック イベントがキャンセルされました。remove クラスがクリック イベントをオーバーライドしています。
私が達成したいのは、星の上にマウスを置くと、すべての兄弟が強調表示され、基本的にマウスをたどり、星を選択することを決定したら、それをクリックできるようにすることです。そのすべての兄弟とクリックしたものはaddClass メソッドが適用されました
私がこれまでに持っているもの
/* Hover Function */
$(document).ready(function(){
$('.ratings li').hover(function(){
$(this).prevAll().andSelf().addClass('goldstar');
}, function() {
$(this).prevAll().andSelf().removeClass('goldstar');
});
});
/* Click Function */
$(document).ready(function(){
$('.ratings li').click(function(){
$(this).prevAll().andSelf().addClass('goldstar');
});
});
/* Click functions to add a value */
$(document).ready(function(){
$('#firstStar').click(function(){
$('#hiddenRating').val(1);
});
});
$(document).ready(function(){
$('#secondStar').click(function(){
$('#hiddenRating').val(2);
});
});
$(document).ready(function(){
$('#thirdStar').click(function(){
$('#hiddenRating').val(3);
});
});
$(document).ready(function(){
$('#fourthStar').click(function(){
$('#hiddenRating').val(4);
});
});
$(document).ready(function(){
$('#fifthStar').click(function(){
$('#hiddenRating').val(5);
});
});
フォーム
<%= form_for @rating do |f| %>
<%= f.hidden_field :ratings, :id => "hiddenRating" %>
<%= f.hidden_field :user_id, :value => current_user.id %>
<%= f.hidden_field :recipe_id, :value => @recipe.id %>
<div class="ratings">
<ul>
<li id="firstStar"></li>
<li id="secondStar"></li>
<li id="thirdStar"></li>
<li id="fourthStar"></li>
<li id="fifthStar"></li>
</ul>
</div>
これを行うためのより良い方法があるに違いないことはわかっています。繰り返しコードがたくさんありますが、学習中であり、これをリファクタリングする方法を知りたいと思っています。.val メソッドを 1 つに結合する方法はありますか?
ホバーとクリック機能に関しては、 on メソッドを使用してホバーとクリックを渡すことができると理解していますか? これを実装する方法がわからない
どんな助けでも感謝します、
編集
ありがとう