2011-09-30 48 views
0

我没有使用“.is”工作。它在IE9,Firefox和其他现代浏览器的工作很好,但不是IE8或IE7如何让“.is”在旧版Internet Explorer中工作

<!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和更早的版本?

回答

2

尝试使用$(document).click而不是$('body').click。有时<body>标签不占用全屏幕高度/宽度,因此您可能会在<body>标签之外点击。

此外,而不是.is(":hover"),尝试 !$(e.target).is('.myDiv') $(e.target).closest('.myDiv').length === 0.closest使用,如果我们点击股利或股利的孩子检测)。我不认为IE7或IE8支持:hover CSS伪属性。

$(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/

+0

谢谢,但问题是,报警触发,如果我的东西克利克的div内即可。下面是一个例子(尝试点击文本):http://jsfiddle.net/uh8RB/12/ – WIRN

+0

@ user263091:更改'if(!$(e.target).is('。myDiv')){'to 'if($(e.target).closest('。myDiv')。length === 0){'http://jsfiddle.net/uh8RB/14/ –

相关问题