【问题标题】:Containing div loses focus when mousing over select dropdown将鼠标悬停在选择下拉菜单上时,包含 div 会失去焦点
【发布时间】:2013-03-22 20:58:34
【问题描述】:

我有一个 div,当您将鼠标悬停在其容器上时会出现一个 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();
  }
);

【问题讨论】:

标签: jquery css internet-explorer firefox


【解决方案1】:

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

$(document).ready(function(){

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

});

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

【讨论】:

  • 我会说对于这个用例来说这比我的解决方案更方便:)
  • 所以这看起来可行 - 谢谢!我刚刚实现并来到这里发布的另一种解决方案是根本不使用 jquery 并使用 css 控制 .dropdown div 的显示/隐藏(我不知道为什么我花了这么长时间才弄清楚) .
  • 实际上,这个解决方案在 IE9 中并不适用。它确实解决了 Firefox 中的问题
  • 一个选项是在它周围放置一个“if”语句并将其仅应用于 Firefox
【解决方案2】:

您可以使用超时来阻止隐藏操作。比如:

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

【讨论】:

    猜你喜欢
    • 2012-08-03
    • 1970-01-01
    • 2012-11-03
    • 2018-08-15
    • 2013-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多