Jquery IE中的类转换问题

Jquery IE中的类转换问题,jquery,internet-explorer,Jquery,Internet Explorer,我需要更改mouseover事件中元素的类,但它不会触发。但是,如果我在函数中添加了一个警报,它确实可以工作 不起作用: mouseenter: function(){ $('#id-b-red').addClass('mouseover') } 是否有效: mouseenter: function(){ alert('$%!# IE') $('#id-b-red').addClass('mouseover') } 也许这与我使用:before和:after伪元素有关 .

我需要更改mouseover事件中元素的类,但它不会触发。但是,如果我在函数中添加了一个警报,它确实可以工作

不起作用:

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;
}

但是我不知道如何解决它。

首先,正如评论中所述,Javascript代码需要分号来结束每个语句。在某些情况下,如果一个块中只有一行,则可以不使用它们,这就是为什么原始代码在没有警报的情况下工作,但我怀疑这可能是添加警报不起作用的原因。好的Javascript代码应该在每一行的末尾都有一个分号


第二:请说明您正在测试的IE版本以及您需要使用的版本。您正在使用:before和:after。请注意,这些伪选择器仅适用于IE8及以上版本。它们在IE6或IE7中不起作用。因此,如果您正在使用旧版本的IE或更新版本进行测试,但使用的是quirks模式或兼容模式,那么:before和:after将被中断。

试试这个。它适用于我所有的浏览器

<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>

@马特波尔哈-我做了同样的编辑:-你应该包括;在…的结尾statements@ALL:对不起。他正在做翻译工作@约瑟夫,你改变了OP的密码,不要那样做。。。。我改了back@UkuLoskit-你应该,但你不需要to@Neal-哇,那篇文章真是一篇长篇大论。而且是错误的。在某些情况下,它们是可选的,这是正确的,但它们是无用的,这是错误的。他对花括号的看法也是错误的。他反对公认的良好做法。他甚至还提出了一个警告,说明他自己的论点完全站不住脚,并确切说明了他错的原因。然后,他主张在某些行的前面加上分号。哇!哇。我会忘记我读过那本书。