2010-01-23 71 views
3

我想暂时改变悬停div的内容,用此jQuery的:jQuery的悬停事件鼠标射击两次在

$(document).ready(function() { 
    var $ratingHtml = ''; 
    $('.userRating').hover(
     function() { 
      $ratingHtml = $(this).html(); 
      alert($ratingHtml); 
      $(this).html('Log in to rate'); 
     }, 
     function() { 
      alert($ratingHtml); 
      $(this).html($ratingHtml);    
     } 
    ); 
}); 

然而悬停,警报出现了两次 - 第一次为原HTML内容,然后再次输入字符串'登录到速率'。这似乎是第二个鼠标悬停事件发生。我该如何解决这个问题?

+1

它仍然这样做,如果你删除警报?当您关闭警报时,您可能会收到新事件,因为弹出警报时元素可能会失去焦点。 – tvanfosson 2010-01-23 21:23:29

+0

@ tvanfosson:不,这些警报只是为了调试目的而添加的,如果没有它们,也会发生同样的情况。 – DisgruntledGoat 2010-01-23 23:20:43

+0

你有没有尝试改变文字,而不是HTML?我发现添加DIV是有效的,但是我想知道是否使用'.text()'也可以。 – tvanfosson 2010-01-23 23:32:48

回答

2

我决定去与不同的解决方案 - 将在叠加文本:

$('.userRating').hover(
    function() { 
     $('<div class="loginMsg">Log in to rate</div>').appendTo('.userRating'); 
    }, 
    function() { 
     $('.loginMsg').remove(); 
    } 
); 

随着相应的风格指数CSS。

0

这个问题已经被问和回答here @ stackoverflow.com ....

你可以利用这个jQuery plugin的...这将帮助你的悬停......