2010-07-18 47 views
-1

下面的代碼:jQuery的LIVE,有追加,更是打破了鼠標懸停

<p>Morbi vitae erat. Cras sem lorem, porta ut, aliquam id, porta sed, velit. 
Pellentesque scelerisque erat rhoncus nulla. <span class="findme">find me</span>Integer pulvinar, est ut</p> 

<script type="text/javascript"> 
$(document).ready(function() { 

    $('.findme').live('mouseover mouseout', function(event) { 
     if (event.type == 'mouseover') { 
      // do something on mouseover 
      $(this).css("background", "red"); 
      $(this).append('<span id="dropdown">XXX</span>'); 
     } else { 
      // do something on mouseout 
      $(this).css("background", "transparent"); 
      $('#dropdown').remove(); 
     } 
    }); 

}); 
</script> 

我希望有一個下拉元素旁邊會出現下一個,允許用戶更改設置時,他們把他們的鼠標過度。問題在於,當鼠標滑過XXX時,即使它位於.findme中,它也會觸發一個mouseout。任何想法爲什麼?或者更好的方法來實現這種效果?

+0

你能舉辦一個這樣的例子嗎? – 2010-07-18 03:26:05

+0

我沒有服務器。我正在使用1.4.2 – AnApprentice 2010-07-18 03:33:21

+0

有免費的網絡主機。實現它。 – 2010-07-18 03:38:22

回答

0

嘗試使用mouseenter和mouseleave。

.live({ 
    mouseenter: 
     function() 
     { 

     }, 
    mouseleave: 
     function() 
     { 

     } 
    } 
); 
+0

有趣,但似乎並沒有工作 – AnApprentice 2010-07-18 03:30:06

2

這是mouseout的標準行爲。如果您使用的是jQuery 1.4,那麼您應該用mouseenter/mouseleave替換mouseover/mouseout。

編輯: 一些示例代碼:

$(document).ready(function() { 

    $('.findme').live('mouseenter', function(event) { 
     $(this).css("background", "red"); 
     $(this).append('<span id="dropdown">XXX</span>'); 
    }).live('mouseleave', function(event) { 
     $(this).css("background", "transparent"); 
     $('#dropdown').remove(); 
    }); 

}); 
+0

你可以展示一個exmaple,我正在嘗試,但它不工作 – AnApprentice 2010-07-18 03:33:06

+0

發表這個問題的一個例子。有90%的機會在網頁上做錯了事,並且沒有以容易看到的方式發佈實際獲得的內容,我們無能爲力。 – 2010-07-18 03:58:43

+0

它在iframe中,這可能是問題嗎? – AnApprentice 2010-07-18 04:32:31

0

這結束了正常工作:

$(".findme").mouseenter(function(){ 
    // do something on mouseover 
    $(this).css("background", "red"); 
    $(this).append('<span id="dropdown">edit</span>'); 
}).mouseleave(function(){ 
    // do something on mouseout 
    $(this).css("background", "transparent"); 
    $('#dropdown').remove(); 
}); 

希望這有助於其他有類似需求。

+1

你可能會接受這個答案,以便其他人可以告訴你已經解決了這個問題。 – 2010-08-26 15:03:01