2

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

查询:

$('.container').hover(
  function () {
    $('.dropdown').show();
  },
  function () {
    $('.dropdown').hide();
  }
);
4

2 回答 2

1

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

$(document).ready(function(){

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

});

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

于 2013-04-01T19:22:52.103 回答
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');
于 2013-04-01T19:24:02.950 回答