Проблема со сменой класса в IE - PullRequest
0 голосов
/ 31 августа 2011

Мне нужно изменить класс элемента при наведении мыши, и он не срабатывает.Но если я добавлю предупреждение в функцию, она будет работать.

Не работает:

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

но я не знаю, как это решить.

Ответы [ 2 ]

0 голосов
/ 31 августа 2011

Попробуй это.Это работает для меня во всех браузерах ...

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

0 голосов
/ 31 августа 2011

Во-первых, как было указано в комментариях, код Javascript требует точки с запятой для завершения каждого оператора. Вы можете уйти без них в некоторых случаях (когда у вас есть только одна строка в блоке), поэтому исходный код работал без alert, но я подозреваю, что это может быть, поэтому добавление alert не работает. Хороший код Javascript должен иметь точку с запятой в конце каждой строки.

Во-вторых: пожалуйста, укажите, с какой версией IE вы тестируете (и с какими версиями вам нужно работать). Вы используете :before и :after. Обратите внимание, что эти псевдо-селекторы работают только в IE8 и выше. Они не работают в IE6 или IE7. Поэтому, если вы тестируете более старую версию IE (или более новую версию, но с использованием режима совместимости или совместимости), то :before и :after будут повреждены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...