2017-02-23 1 views
-1

ここに状況があります。jQueryクラス項目が復帰し続ける

ユーザーがレーティングをクリックしたときにdivクラスアイテムを削除しようとしています。

私が持っている問題は、アイテムをクリックするたびに消えることですが、マウスを動かすと削除したアイテムが戻ってくるということです。

<div class="star_'.($iPos+1).' ratings_stars ratings_vote" onmouseover="overRating(this);" onmouseout="outRating(this);" onClick="selectEmailRating(this);" ></div> 

上記の項目ではJavaScriptを呼び出しているのdivです:

は、ここに私の現在のコードです。あなたがコードで見たように、項目を削除して

function selectEmailRating(elem) { 
     var star = elem; 
     var rating = widget.data('fsr').rating; 

     if($(star).attr('class') === 'star_'+ rating + ' ratings_stars ratings_over ratings_vote'){ 
      $(elem).andSelf().removeClass(); 
      $(star).attr('class', 'star_'+ rating + ' ratings_stars'); 
      $(star).attr('class').unbind('onmouseover').unbind('onmouseout'); 
     } 


     function outRating(elem) { 
      $(elem).prevAll().andSelf().removeClass('ratings_over'); 
      setRating($(elem).parent()); 
     } 

     function overRating(elem) { 
      $(elem).prevAll().andSelf().addClass('ratings_over'); 
      $(elem).nextAll().removeClass('ratings_vote'); 
     } 

     function setRating(widget) { 
      var votes = $(widget).data('fsr').rating; 
      $(widget).find('.star_' + votes).prevAll().andSelf().addClass('ratings_vote'); 
      $(widget).find('.star_' + votes).nextAll().removeClass('ratings_vote'); 

      } 

私は、マウスを移動すると、しかし、それが戻って来ている:私は評価をクリックすると、私は以下の次の関数であるコードを実行します。それを削除するためにアイテムをクリックしたときに削除されていることを確認する方法はありますか?

+2

何あなた 'outRating'機能がどのように見えるのでしょうか? –

+2

あなたのoverRatingとoutRating関数は何をしますか?それらを共有できますか? – robbclarke

+1

また、文字列を返す '$(star).attr(" class ")'からイベントリスナーをアンバインドしようとしています。あなたは本質的に '' star_x ratings_stars ratings_vote ".unbind(..)...' – mhodges

答えて

0

を見てすることがあります。..

評価は戻って来続ける理由を把握しようとした後、それは事実に起因したことoutRating関数が問題を引き起こしていました。ここで私が何をしたか...

古いoutRating機能:

 function outRating(elem) { 
     $(elem).prevAll().andSelf().removeClass('ratings_over'); 
     setRating($(elem).parent()); 
     } 

新しいoutRating機能:

 function outRating(elem) { 
     var star = elem; 
     var widget = $(elem).parent(); 
     var rating = widget.data('fsr').rating; 

     $(elem).prevAll().andSelf().removeClass('ratings_over'); 

     if($(star).attr('class') !== 'star_'+ rating + ' ratings_stars') { 
      setRating($(elem).parent()); 
     } 
     } 
0

ここで間違っているかもしれませんが、onmouse *イベントを要素に「バインド」していない場合は、属性を追加しました。

あなたはonmouse *属性を$(elemment).attr( 'onmouseout'、 '')または何かに上書きすることができます。

、あなたは私が解決策を見つけまあhttps://api.jquery.com/hasclass/

関連する問題