Как заставить работать «.is» в более старых версиях Internet Explorer - PullRequest
0 голосов
/ 30 сентября 2011

Я не получаю ".is" на работу. Он отлично работает в IE9, Firefox и других современных браузерах, но не в IE8 или IE7

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>

<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" type="text/javascript"></script>
</head>

<body>

<script type="text/javascript">
        $('body').click(function () {                   
                if (!$('.myDiv').is(":hover")) {
                    alert("outside of blue div");
                }
        });
</script>

<div class="myDiv" style="width:150px; height:150px; background:blue">&nbsp;</div>

</body>

</html>

Или посмотрите здесь http://jsfiddle.net/uh8RB/

Как мне заставить его работать в IE8 и старше?

1 Ответ

2 голосов
/ 30 сентября 2011

Попробуйте использовать $(document).click вместо $('body').click. Иногда тег <body> не занимает всю высоту / ширину экрана, поэтому вы можете щелкнуть за пределами тега <body>.

Кроме того, вместо .is(":hover"), попробуйте !$(e.target).is('.myDiv') $(e.target).closest('.myDiv').length === 0 (.closest используется для определения, щелкаем ли мы по div или потомку div). Я не думаю, что IE7 или IE8 поддерживают псевдо-свойство CSS :hover.

$(document).click(function(e) {                   
   if($(e.target).closest('.myDiv').length === 0) {
      alert("outside of blue div");
   }
});

Демо: http://jsfiddle.net/uh8RB/5/
Больше тестов: http://jsfiddle.net/uh8RB/8/
Обновленная демоверсия: http://jsfiddle.net/uh8RB/14/

...