Jquery 鼠标悬停后jqDock菜单活动状态未恢复
我正在使用jqDock插件用jquery构建一个dock菜单 有一个选项可以传递“活动”菜单项索引。页面加载时存在活动状态,但在鼠标再次滑过菜单后,该状态不起作用 关于使此示例代码使用“活动”状态恢复功能的任何建议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
<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”选项可以(或!)产生讨厌的“跳转”效应。