2010-09-21 83 views
0

我建立這個非常簡單的腳本,但我沒有工作。
jQuery的 - 將鼠標置於DIV = addClass

有人可以告訴我在哪裏的錯誤是什麼?

HTML

<div id="hello" style="border: 1px solid #000000; margin:10px; padding:5px;">Hello</div> 
<div style="border: 1px solid #000000; margin:10px; padding:5px;">Word</div> 
<div style="margin:10px; padding:5px;">Test</div> 

JS

$(function() 
{ 

    $('div').live('hover', function (event) 
    { 
      if (event.type == 'mouseover') 
      { 
       $(this).addClass('mark'); 
      } 
      else 
      { 
       $(this).removeClass('mark'); 
      } 
    }); 

}); 

http://www.jsfiddle.net/4pYth/4/

提前感謝!
彼得

回答

3

我想你想爲這個使用兩個單獨的現場活動。

$('div').live('mouseenter', function() { 
    $(this).addClass('mark'); 
}).live('mouseleave', function() { 
    $(this).removeClass('mark'); 
)}; 

編輯:

這裏是mouseentermouseover之間的差異的鏈接,以防萬一你是好奇: What is the difference between the mouseover and mouseenter events?

+0

嗨鷓鴣,您的解決方案沒有奏效...... http://www.jsfiddle.net/4pYth/11/ – Peter 2010-09-21 17:29:01

+2

我覺得你的jsfiddle用mootools的,而不是jQuery的。 http://www.jsfiddle.net/4pYth/12/ – partkyle 2010-09-21 17:34:58

+0

UPS :) ....非常感謝! – Peter 2010-09-21 17:49:44

0

hover不是一個事件。

許多對jQuery的對象與事件相關的快捷方法是真實事件:clicksubmit等,但hover不是,那就是註冊一個mouseentermouseleave事件獨立的快捷方法。

live()只能接受事件,所以如果你想使用類似懸停的代碼,你需要單獨的事件,就像凱爾的例子。

但是,這會有點慢,因爲現在jQuery必須監視每個鼠標移動,以查看它是否發生在/來自div元素。它可能會更快只使用hover()綁定上的div的mouseenter/leave事件目前在頁面上,沒有live -ness。如果你有動態添加div元素,這將意味着讓他們雖然增加了文檔時重新綁定。

更好:只使用CSS懸停。只有IE6的舊版本:hover失敗;如果你真的需要提供不錯的懸停效果,該瀏覽器的用戶(呸!他們不值得吧,流氓!),那麼你可以添加備用腳本只有瀏覽器,如:

<style type="text/css"> 
    div:hover, div.hover { background: red; } 
</style> 

<!--[if lt IE 7]><body class="browser-ie6"><![endif]--> 
<!--[if gte IE 7]><!--><body><!--<![endif]--> 

<script type="text/javascript"> 
    if ($(document.body).hasClass('browser-ie6')) { 
     $('div').live('mouseenter', function() { 
      $(this).addClass('hover'); 
     }).live('mouseleave', function() { 
      $(this).removeClass('hover'); 
     )}; 
    } 
</script> 
+1

出於好奇,爲什麼你使用這種方法進行瀏覽器檢測,並且沒有jQuery $ .browser檢查? – partkyle 2010-09-21 17:42:31

+0

正如jQuery源代碼所說,「jQuery.browser的使用令人不悅」。這是一個粗略的'navigator.userAgent'字符串搜索,可能出於*很多原因而出錯,尤其是對於IE的誤報,因爲許多其他客戶端在其用戶代理字符串中的各個點上都有字符串'msie'。當您需要隔離的瀏覽器是IE時,條件註釋是一種*更準確的方法。它們不如功能嗅探('$。支持'在jQuery中),但你不能合理的功能嗅探懸停支持。 'body'上的一個類也可以很容易地提供純IE樣式表規則。 – bobince 2010-09-21 18:25:50