Попробуйте использовать $(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/