2011-08-30 45 views
0

我需要在mouseover事件中更改元素的類並且它不會觸發。但如果我在函數中添加了一個警報,它確實有效。IE中的類更改問題

不起作用:

mouseenter: function(){ 
    $('#id-b-red').addClass('mouseover') 
} 

是否工作:

mouseenter: function(){ 
    alert('$%!# IE') 
    $('#id-b-red').addClass('mouseover') 
} 

也許這有什麼用:before:after僞元素與我做什麼?

.mouseover:before, 
.mouseover .btn-before, 
.mouseover:after, 
.mouseover .btn-after{ 
    background-position: 0 -33px; 
} 

,但我不知道如何解決它。

+0

@MattBall哈哈 - 我正在同編輯:-P – Neal

+2

你應該包括「;」在陳述結尾 –

+0

@Neal':: sigh ::' –

回答

0

首先,正如評論中所述,Javascript代碼需要用分號來結束每個語句。你可以弄到沒有他們在一些個案(你只在一個塊中有一行),這就是爲什麼原始代碼工作沒有alert,但我懷疑這可能是爲什麼加入alert不起作用。好的Javascript代碼應該在每一行的末尾都有一個分號。其次:請說明您正在測試的IE版本(以及您需要使用的版本)。您正在使用:before:after。請注意,這些僞選擇器僅適用於IE8及更高版本。它們在IE6或IE7中不起作用。因此,如果您使用舊版本的IE進行測試(或者使用更新版本,但使用了怪癖模式或兼容模式),那麼:before:after將被打破。

+0

http://mislav.uniqpath.com/2010/05/semicolons/分號是**不是**需要 – Neal

+0

@尼爾 - 哇,那篇文章是一個巨大的咆哮。錯了。在某些情況下,它們是可選的*,但錯誤的是它們沒用。 (他也錯了大括號)。他正在反對公認的良好做法。他甚至提出了一個警告,他自己的論點完全崩潰,並證明他爲什麼錯了。 (然後他主張把分號放在一些行的前面,哇,我會忘記我讀過的。) – Spudley

0

試試這個。這對我的作品在所有瀏覽器...

<html> 
<head> 
    <title>Sample</title> 
</head> 

<script type="text/javascript" src="jquery-1.6.2.min.js"></script> 

<script type="text/javascript"> 
    $(document).ready(function(e){ 
     $('#testBox').mouseenter(function() { 
      $(this).addClass('greenClass'); 
     }); 

     $('#testBox').mouseleave(function() { 
      $(this).removeClass('greenClass'); 
     }); 
    }); 
</script> 

<style type="text/css"> 
    .redClass{ 
     background-color:red; 
    } 

    .greenClass{ 
     background-color:green; 
    } 
</style> 

<body> 
    <div id="testBox" style="height:30px; width:30px;" class="redClass"></div> 
</body>