Я вижу неожиданное поведение на небольшом HTML-виджетах, недавно созданных. Три последовательно встроенных divs каждый имеет маркер и меню, которые появляются при входе в div и скрываются при выходе. Маркер предназначен для отслеживания положения вертикальной мыши. Проблема здесь в том, что событие mouseover срабатывает только тогда, когда мышь находится над маркером, а не когда мышь над содержащим div.неожиданное поведение события jquery изнутри содержит div
http://jsfiddle.net/laurencefass/f47a7a2r/
$(".outer, .inner, .middle")
.mouseenter(function(e) {
$(this).children(".content:first").show();
$(this).parents().children(".content:first").hide();
$(this).children(".marker:first").show();
$(this).parents().children(".marker:first").hide();
})
.mouseleave(function(e) {
$(this).children(".content:first").hide();
$(this).parents().children(".content:first").show();
$(this).children(".marker:first").hide();
$(this).parents().children(".marker:first").show();
})
.mouseover(function(e) {
$(".content", $(this)).html("left = " + e.pageX + " right = " + e.pageY);
var marker = $(this).children(".marker");
marker.offset({top:e.pageY - marker.height()/2, right:0});});
.outer, .middle, .inner {
font-size:0.8em;
position:absolute;
border:5px solid black;
background-color:lightgray;
text-align:center;
}
.outer {
top:10%;
left:10%;
width:80%;
height:500%;
}
.middle {
top:5%;
left:20%;
width:60%;
height:60%;
}
.inner {
top:5%;
left:30%;
width:40%;
height:60%;
}
.content {
background-color:aliceblue;
min-height:2em;
min-width:50px;
display:none;
}
.marker {
height:50px;
width:5em;
background-color:black;
position:absolute;
right:0px;
margin-right:2px;
display:none;
color:white;
fontsize:0.8em;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<div class="outer">
<div class="content">outer menu</div>
<div class="marker">widget</div>
<div class="middle">
<div class="content">middle menu</div>
<div class="marker">widget</div>
<div class="inner">
<div class="content">inner menu</div>
<div class="marker">widget</div>
</div>
</div>
</div>
Вы пытаетесь обновить положение маркера при перемещении мыши? если да, то вам нужно использовать mousemove – joyBlanks
спасибо. это решает проблему. хотя он не объясняет, почему код jquery выше отвечает на $ («. marker»). события mouseover. –