Для обновленного Вопроса: Поскольку события мыши не будут происходить на этом меньшем элементе (он полностью перекрывается), вам придется использовать третий <div>
, например так:
<div class="block">
<div class="popup"></div>
<div class="popup upper"></div>
<div class="image"></div>
</div>
И добавьте этот CSS (обратите внимание, что z-index
выше, чем остальные .popup
):
.upper { width: 100px; height: 100px; z-index: 41; }
и соответствующий скрипт:
$(".block .image").mouseenter(function(){
console.log($(this).siblings(".popup").length);
$(this).siblings(".popup").show();
});
$(".block .upper").mouseleave(function(){
$(this).siblings(".popup").andSelf().hide();
});
Вы можете проверить это здесь .
Для предыдущего вопроса: Поскольку всплывающее окно находится над элементом, используйте mouseenter
на триггере, mouseleave
на всплывающем окне , вот так:
$(".block .image").mouseenter(function(){
$(this).siblings(".popup").show();
});
$(".block .popup").mouseleave(function(){
$(this).hide();
});
Вы можете проверить это здесь .