我无法找到帮助的东西。我有两个元素,一个在另一个内部。 两者都有鼠标悬停监听器。
问题是,只有包装元素的侦听器被触发,即使我将内部元素的z-index设置得更高,我也无法让其他侦听器工作。
我在考虑jquery排除选择?但我确信有一个更简单,更好的解决方案。
以下是代码:
#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-index在这种情况下不起作用?我确定如果我将两个对象相互浮动,或者一个是文档对象,另一个是div内部,情况会是相同的。
答案 0 :(得分:0)
class
div添加outer
,然后使用mouseover
事件而不是mouseenter
事件,并在该类上绑定此事件。
像这样
$('.outer').mouseenter(function(){ console.log('outer'); });
而不是在mouseover
div上使用inner
事件使用hover
事件。
在hover
事件中,第一个function
会在mouseover
上呼叫,在mouseout
上呼叫第二个。
诀窍是,在第一个函数中我们删除父div的类,即outer
div,在第二个函数中,我们再次添加该类,并触发父div的mouseenter
事件。
$('#inner').hover(function(){
$parent = $(this).parent();
$parent.removeClass("outer");
console.log('inner');
},function(){
$parent.addClass("outer").trigger("mouseenter");
});
这就是你如何完成任务。
这是DEMO