2017-02-23 73 views
-1

這是情況。jQuery刪除class item不斷回來

我試圖刪除基於當用戶點擊評級時的div類項目。

我遇到的問題是,每次點擊該項目時,它都會消失,但是當我移動鼠標時,我移除的項目又回來了。

這裏是我當前的代碼:

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

以上項目是調用JavaScript股利。當我點擊的評價我運行的是在下面的下面的函數代碼:

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 *事件「綁定」到元素,您添加了屬性。

你可以用$(elemment).attr('onmouseout','')或類似的東西來覆蓋onmouse *屬性。

,你可能想看看https://api.jquery.com/hasclass/