当你将鼠标悬停在其容器上并且div绝对定位时,我会看到一个div,以便它显示在其容器之外。它有多个选择下拉列表,当我尝试更改其中任何一个的值时,焦点丢失,它会触发容器上的鼠标输出。
我在这里建立了一个这个问题的工作范例:
http://jsfiddle.net/uBjR3/2/
此问题发生在FireFox和IE中(Chrome似乎工作正常)。
=====
HTML:
<div class="container">
<div class="dropdown">
<select>
<option>option 1</option>
<option>option 2</option>
<option>option 3</option>
<option>option 4</option>
</select>
</div>
</div>
CSS:
.container { background-color: red; height: 30px; width: 60px; padding: 20px; position: relative; }
.dropdown { background-color: blue; height: 300px; width: 200px; padding: 20px; position: absolute; top: 70px; left: 0px; display: none; }
JQuery的:
$('.container').hover(
function () {
$('.dropdown').show();
},
function () {
$('.dropdown').hide();
}
);
答案 0 :(得分:1)
我刚看了你的代码。用这个替换你的jQuery,它将按你的意愿工作
$(document).ready(function(){
$('.container').hover(function(){
$('.dropdown').stop(1).slideDown();
},function(){
$(".dropdown").stop(1).slideUp();
});
});
答案 1 :(得分:0)
您可以使用超时来阻止隐藏操作。类似的东西:
var timer;
$('PARENT')
.on(
mouseenter: function() {
clearTimeout(timer);
$('.dropdown').show();
},
mouseleave: function() {
timer = setTimeout(function() {
$('.dropdown').hide();
}, 400);
}, '.container')
.on(
mouseenter: function() {
clearTimeout(timer);
},
mouseleave: function() {
timer = setTimeout(function() {
$('.dropdown').hide();
}, 400);
}, '.dropdown');