我正在尝试在我的网站中创建一个类似于 win8 魅力栏的滑块。它看起来有点像这样:
我希望它像这样运行: 1. 如果它是打开的,那么#red 上的单击事件将关闭 #green(向左滑动),#red 上的悬停事件将什么也不做 2. 如果 #green 关闭,则悬停在 #red将滑出#green。
这是我的 jQuery 代码
$("#red").click(function(event) {
$("#green").removeClass('ready');
if ($("#green").hasClass('visible')) {
var width = $("#green").width();
$("#green").animate({"left":"-"+width+"px"}, "fast");
$("#green").promise().done(function() {
$("#green").removeClass('visible');
$("#green").addClass('ready');
});
}
});
$("#red").hover(function(event) {
if ( !($("#green").hasClass('visible')) && $("#green").hasClass('ready') )
{
$("#green").animate({"left":"0px"}, "fast");
$("#green").promise().done(function() {
$("#green").addClass('visible');
});
}
});
我认为在单击#red 事件脚本后不会更新#red 上的位置(它仍然认为它在同一个地方),并且当我在单击后移动鼠标时,会触发悬停事件。添加类 .ready 和 .visible 似乎可以正常工作,因为如果我在滑动完成之前移动鼠标,则不会触发悬停。
编辑:它似乎在 FF 中运行良好,但在 Chrome 和 IE 中却不行。
EDIT2:将 'hover' 更改为 'mouseenter' 修复了它。
jsFiddle 代码:http: //jsfiddle.net/grhfT/2/
如果有人可以在这里帮助我,我将不胜感激。谢谢 !