当鼠标悬停在选择下拉列表时,包含div会失去焦点

时间:2013-04-01 18:31:40

标签: jquery css internet-explorer firefox

当你将鼠标悬停在其容器上并且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();
  }
);

2 个答案:

答案 0 :(得分:1)

我刚看了你的代码。用这个替换你的jQuery,它将按你的意愿工作

$(document).ready(function(){

      $('.container').hover(function(){
      $('.dropdown').stop(1).slideDown();
   },function(){
      $(".dropdown").stop(1).slideUp();
   }); 

});

这是工作演示http://jsfiddle.net/kevinPHPkevin/uBjR3/11/

答案 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');