【问题标题】:jQuery Dropdown Menu Not WorkingjQuery下拉菜单不起作用
【发布时间】:2014-12-29 22:43:47
【问题描述】:

我正在尝试制作一个具有设置功能的网站,并且我有这个按钮。我希望选项和其他链接在悬停时出现在下拉菜单中。我有我认为应该可以工作的代码,但由于某种原因它不能工作。

JSFiddle Here

Javascript 、CSS 和 HTML:-

$(document).ready(function(){
  $('#settings').mouseenter(function(){
    $('#settingDrop').css('visibilty', 'visible'); 
  });
  $('#settingDrop, #settings').mouseleave(function(){
    $('#settingDrop').css('visibilty', 'hidden'); 
  });
});
#settings {
  width: 40px;
  background-image: url(http://cdn.flaticon.com/png/256/23171.png);
  background-repeat: no-repeat;
  background-size: 40px 40px;
  background-color: #F0F0F0;
  bottom: 0px;
  position: relative;
  height: 30px;
  background-position: center;
  float:left;
}

#settingDrop {
  position: absolute;
  width: 200px;
  height: 300px;
  background-color: #F0F0F0;
  float:left;
  top:55px;
  visibility: hidden;
}
.navbar {
  margin-left:
    width: 170px;
  padding: 10px 5px 10px 5px;
  text-align: center;
  display: inline-block;
  margin-right: 30px;
  height: 30px;
}
<div id = 'settings' class='navbar'></div>
<div id = 'settingDrop'></div>

【问题讨论】:

  • 你发现了什么错误??
  • 什么也没发生。我检查了我的 Javascript,一切似乎都很好。下拉菜单没有出现
  • 那是因为打错了,应该是visibility而不是点击功能中的visibilty。在 Fiddle 中修复:jsfiddle.net/z0ta8Ly9
  • 有点作用,但当我将鼠标悬停在下拉菜单上时不会留下来。不过我还是觉得自己像个白痴.....
  • @Jasch1 你需要让下拉菜单在鼠标悬停时出现并在光标移动时隐藏

标签: javascript jquery html css drop-down-menu


【解决方案1】:

visibility 有错字。

$(document).ready(function(){
    $('#settings').mouseenter(function(){
       $('#settingDrop').css('visibility', 'visible'); 
    });
    $('#settingDrop, #settings').mouseleave(function(){
       $('#settingDrop').css('visibility', 'hidden'); 
    });
});

作为一个注释和更短的代码,使用 CSS display:none 和 jQuery show(milliseconds)hide(milliseconds) 更快,您甚至可以使用时间为它制作动画,如下所示:

$(document).ready(function(){

    $('#settings').mouseenter(function(){
       $('#settingDrop').show(500); 
    });

    $('#settingDrop, #settings').mouseleave(function(){
        $('#settingDrop').hide(500); 
    });

});

fadeIn(milliseconds)fadeOut(milliseconds) 相同

并将visibility:hidden 更改为display:none

* 编辑 *

这是为了让菜单在几秒钟后消失(在这种情况下 2, 2000 以毫秒为单位):

$(document).ready(function(){

    $('#settings').click(function(){
       $('#settingDrop').fadeIn(500);
    });

    $('#settingDrop, #settings').mouseleave(function(){
        var time = setInterval(function(){
            $('#settingDrop').fadeOut(500);
            clearInterval(time);
        }, 2000);            
    });

});

这是更新后的小提琴:http://jsfiddle.net/xp4rfLbL/2/

【讨论】:

  • 有点作用,但当我将鼠标悬停在下拉菜单上时不会留下来。不过我还是觉得自己像个白痴.....
  • 好的,那么你应该添加一个计时器,让它在几秒钟后消失。我正在更改代码,请稍等。
猜你喜欢
  • 2013-12-22
  • 1970-01-01
  • 2016-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多