Я не могу понять что-то, пожалуйста, помогите. У меня есть два элемента: один внутри другого. Оба имеют прослушиватель мыши.
Проблема заключается в том, что только прослушиватель элементов-оболочек запущен, я не могу заставить другого слушателя работать, даже если я установил внутренний индекс z-index выше.
Я думал о jquery exclude selection? Но я уверен, что есть намного более простое и лучшее решение.
Вот код:
#outer{
width:500px;height:500px;position:absolute;
z-index:1;
}
#inner{
padding:10px;position:relative;top:50%;left:50%;
z-index:2;
}
<div id='outer'>
<span id='inner'> </span>
</div>
$('#outer').mouseover(function(){ console.log('outer'); });
$('#inner').mouseover(function(){ console.log('inner'); });
Почему z-индекс не работает в этом случае? Я уверен, что ситуация будет такой же, если я буду плавать по двум объектам друг на друга, или один из них будет объектом документа, а другой - внутри.
вы можете обмануть вещи. сначала добавьте class
в свой outer
div, а во-вторых, вместо использования события mouseover
мы используем событие mouseenter
и mouseenter
это событие с этим классом.
как это
$('.outer').mouseenter(function(){ console.log('outer'); });
и вместо использования события mouseover
на вашем inner
div используйте событие hover
.
В первом случае function
hover
вызывает вызов mouseover
и second on mouseout
.
Хитрость заключается в том, что при первой функции мы удаляем класс родительского div, т. mouseenter
outer
div, а во второй - добавляем этот класс снова и mouseenter
событие mouseenter
родительского div.
как это
$('#inner').hover(function(){
$parent = $(this).parent();
$parent.removeClass("outer");
console.log('inner');
},function(){
$parent.addClass("outer").trigger("mouseenter");
});
вот как вы можете достичь своей задачи.
вот ДЕМО