Javascript Chrome-选择元素中的奇怪鼠标事件
我用于工作的网站在顶部有一个下拉菜单,然后在下面形成内容。单击表单中的“选择”会导致菜单项被选中,就像用户将鼠标悬停在菜单项上一样 我已经设法在一个示例页面上复制了这个问题,请看一下这个提琴:Javascript Chrome-选择元素中的奇怪鼠标事件,javascript,google-chrome,select,mouseover,Javascript,Google Chrome,Select,Mouseover,我用于工作的网站在顶部有一个下拉菜单,然后在下面形成内容。单击表单中的“选择”会导致菜单项被选中,就像用户将鼠标悬停在菜单项上一样 我已经设法在一个示例页面上复制了这个问题,请看一下这个提琴: $(文件)。准备好了吗( 函数() { $(#nav li a')。在('mouseover')上, 函数() { 变量id='#菜单'+$(this).parent('li').attr('id').substr(5), 菜单=$(id), 偏移量=$(此).offset(), xpos=offset
$(文件)。准备好了吗(
函数()
{
$(#nav li a')。在('mouseover')上,
函数()
{
变量id='#菜单'+$(this).parent('li').attr('id').substr(5),
菜单=$(id),
偏移量=$(此).offset(),
xpos=offset.left,
ypos=offset.top+$(this.height();
$('.menu').hide();
menu.css({
“左”:(xpos+2)+“px”,
“顶部”:ypos+“px”
}).show();
}
);
$('nav li a')。在('mouseout'上,
函数()
{
//$('.menu').hide();
}
);
}
);
主体,部门,ul,li,a{
填充:0px;
边际:0px;
}
#导航{
位置:绝对位置;
填充:0px 0px 0px 10px;
顶部:0px;
宽度:100%;
高度:30px;
背景色:#FFF;
-webkit过渡:背景色0.5s轻松;
}
#导航:悬停{
背景色:#000;
}
#导航ul{
列表样式类型:无;
}
#李海军{
浮动:左;
}
#导航a{
显示:块;
保证金:0px 10px 0px 0px;
高度:30px;
线高:30px;
填充:0px 10px 0px 10px;
背景色:#AAA;
}
#导航菜单{
显示:无;
宽度:200px;
高度:100px;
位置:绝对位置;
背景色:#BBB;
}
#内容{
填充物:5px;
保证金:35px 0px 0px 0px;
背景色:#CCC;
}
#content.columns.column{
显示:块;
浮动:左;
宽度:200px;
}
#content.columns.column选择{
显示:块;
}
.清楚{
明确:两者皆有;
}
选择1
选择2
选择3
选择4
选择5
选择6
选择7
选择8
当我点击下面的选择2和4时,菜单上会触发鼠标悬停事件。他们似乎有正确的XPO,但YPO是0
我一直在努力将错误定位到特定的Chrome版本或操作系统,因此如果您遇到错误,请留下评论,说明您使用的Chrome和操作系统的版本-我在Linux上使用的是Chrome 37 64位
谢谢
更新:此问题出现在版本39之前(最新版本为11月14日)。我找到的唯一解决办法是恢复到34版
更新:我刚刚更新到41.0.2272.89(64位),问题似乎已经解决了 这在Firefox中也会发生吗?不,到目前为止我只在Chrome中注意到。在仍然发生?是的仍然发生-你自己能看到原始fiddle中的奇怪行为吗?是的,我也遇到了同样的问题,有人找到了解决方案吗?
<!DOCTYPE html>
<html>
<head>
<script src="../../resources/jquery/jquery-1.11.1.min.js" type="text/javascript"></script>
<title></title>
<script type="text/javascript">
$(document).ready(
function()
{
$('#nav li a').on('mouseover',
function()
{
var id = '#menu_' + $(this).parent('li').attr('id').substr(5),
menu = $(id),
offset = $(this).offset(),
xpos = offset.left,
ypos = offset.top + $(this).height();
$('.menu').hide();
menu.css({
'left': (xpos + 2) + 'px',
'top': ypos + 'px'
}).show();
}
);
$('#nav li a').on('mouseout',
function()
{
//$('.menu').hide();
}
);
}
);
</script>
<style>
body, div, ul, li, a {
padding:0px;
margin:0px;
}
#nav {
position: absolute;
padding:0px 0px 0px 10px;
top: 0px;
width: 100%;
height: 30px;
background-color:#FFF;
-webkit-transition: background-color 0.5s ease;
}
#nav:hover {
background-color:#000;
}
#nav ul{
list-style-type:none;
}
#nav li {
float:left;
}
#nav a {
display:block;
margin:0px 10px 0px 0px;
height:30px;
line-height:30px;
padding:0px 10px 0px 10px;
background-color:#AAA;
}
#nav .menu {
display:none;
width:200px;
height:100px;
position:absolute;
background-color:#BBB;
}
#content {
padding: 5px;
margin: 35px 0px 0px 0px;
background-color:#CCC;
}
#content .columns .column {
display:block;
float:left;
width:200px;
}
#content .columns .column select {
display:block;
}
.clear {
clear:both;
}
</style>
</head>
<body>
<div id="content">
<div class="columns">
<div class="column">
<select>
<option value="1">Select 1</option>
</select>
<select>
<option value="2">Select 2</option>
</select>
</div>
<div class="column">
<select>
<option value="3">Select 3</option>
</select>
<select>
<option value="4">Select 4</option>
</select>
</div>
<div class="column">
<select>
<option value="5">Select 5</option>
</select>
<select>
<option value="6">Select 6</option>
</select>
</div>
<div class="column">
<select>
<option value="7">Select 7</option>
</select>
<select>
<option value="8">Select 8</option>
</select>
</div>
</div>
<div class="clear"></div>
</div>
<div id="nav">
<ul>
<li id="link_1"><a href="#1">Link One</a></li>
<li id="link_2"><a href="#2">Link Two</a></li>
<li id="link_3"><a href="#3">Link Three</a></li>
<li id="link_4"><a href="#4">Link Four</a></li>
</ul>
<div class="menu" id="menu_1"> </div>
<div class="menu" id="menu_2"> </div>
<div class="menu" id="menu_3"> </div>
<div class="menu" id="menu_4"> </div>
</div>
</body>
</html>