Jquery 鼠标悬停后jqDock菜单活动状态未恢复

Jquery 鼠标悬停后jqDock菜单活动状态未恢复,jquery,jquery-plugins,menu,Jquery,Jquery Plugins,Menu,我正在使用jqDock插件用jquery构建一个dock菜单 有一个选项可以传递“活动”菜单项索引。页面加载时存在活动状态,但在鼠标再次滑过菜单后,该状态不起作用 关于使此示例代码使用“活动”状态恢复功能的任何建议 <html> <head> <script type='text/javascript' src='http://code.jquery.com/jquery-latest.min.js'></script> <script ty

我正在使用jqDock插件用jquery构建一个dock菜单

有一个选项可以传递“活动”菜单项索引。页面加载时存在活动状态,但在鼠标再次滑过菜单后,该状态不起作用

关于使此示例代码使用“活动”状态恢复功能的任何建议

<html>
<head>
<script type='text/javascript' src='http://code.jquery.com/jquery-latest.min.js'></script>
<script type='text/javascript' src='jquery.jqDock.min.js'></script>
<script>
jQuery(document).ready(function($){
  // set up the options to be used for jqDock...
  var dockOptions =
      { align: 'top' // horizontal menu, with expansion DOWN from a fixed TOP edge
  , size: 60 //increase 'at rest' size to 60px
  , labels: false //add labels
  , active: $('#menu a.active').index() //set the initially active item
  , onReady: function(){
      $(this).removeClass('hideThis'); //need to show the dock myself
      //return false; //leaves the dock asleep and requiring a 'nudge'!
    }
  }
  //and get $('#menu')...
, Menu = $('#menu');

  //replace my default click handler with a 'active' toggler...
  Menu.children().unbind('click').click(function(){
  //Note: I've set it so that you can only nudge the 'active' item...
  if($(this).filter('.active').removeClass('active').length){
    Menu.jqDock('nudge'); //wake or thaw the dock
  }else if(!$('.active', Menu).length){
    Menu.trigger('dockfreeze'); //freeze the dock
    $(this).addClass('active');
  }
  this.blur();
  return false;
}).end()
// ...and apply jqDock...
.jqdock(dockOptions);
});
</script>
<style type="text\css"></style>
</head>
<body>
<div id='page'>
  <div id='menu' class='hideThis'>
    <a href='#'><img src='Addressbook.png' title='Downloads' alt='' /></a>
    <a href='#'><img src='DVD-Player.png' title='Websites' alt='' /></a>
    <a href='#' class='active'><img src='eMail.png' title='Users' alt='' /></a>
    <a href='#'><img src='Instant_Messaging.png' title='Security' alt='' /></a>
    <a href='#'><img src='Safari.png' title='System' alt='' /></a>
    <a href='#'><img src='Terminal.png' title='System' alt='' /></a>
  </div>
</body>
</html>

jQuery(文档).ready(函数($){
//设置要用于jqDock的选项。。。
var dockOptions=
{align:'top'//水平菜单,从固定的顶部边缘向下展开
,大小:60//将“静止”大小增加到60px
,labels:false//添加标签
,活动:$(“#menu a.active”).index()//设置初始活动项
,onReady:function(){
$(this.removeClass('hideThis');//需要自己显示dock
//return false;//使停靠处于休眠状态并需要“轻推”!
}
}
//并获得美元(“#菜单”)。。。
,Menu=$(“#Menu”);
//将我的默认单击处理程序替换为“活动”切换程序。。。
Menu.children().unbind('click')。click(function()){
//注意:我已将其设置为只能轻推“活动”项。。。
if($(this).filter('.active').removeClass('active').length){
Menu.jqDock('nudge');//唤醒或解冻dock
}else if(!$('.active',Menu).length){
Menu.trigger('dockfreeze');//冻结dock
$(this.addClass('active');
}
这个。blur();
返回false;
})(完)
//…并应用jqDock。。。
.jqdock(dockOptions);
});
我知道的唯一方面是“jqDock”只初始化一次。不能使用不同的参数再次初始化它&再次初始化

仍然不走运:(

在中,第27条试图解释维护“活动”项的困难。它还说v1.6+提供了一种可能的解决方法,但实现取决于构建者

您可以尝试将mouseleave绑定到div.jqDock,在a.active项上运行jqDock“expand”命令?例如

options.onReady = function(){
    $('#menu').mouseleave(function(){
        $(this).find('a.active img').jqdock('expand').end().jqdock('nudge');
    });
}
注意:额外的“轻推”取决于你是否想“睡着”离开码头

P>个人,由于上面提到的FAQ中所陈述的原因,我会考虑用一种样式(如引用的例子中的绿色边框)来区分当前的“活动”项目,特别是在“扩展”的情况下。如在文档中所警告的,使用“Active”选项可以(或!)产生讨厌的“跳转”效应。