我想在下拉菜单中为一组子项目放置onmouseout事件的一些延迟。但我不想使用css转换。 我用.hover()和setTimeout方法设置它,但我只想把它放在菜单中的特定元素 - 在这种情况下仅用于子项目,所以我使用if else else语句。我不知道为什么这个if else声明不起作用。jquery .hover()与else if语句
这里是我的javascript代码:
var selectors =
{
element: '.main-menu li:has(ul)'
}
var opacityWorkaround = function ($element, value) {
$element.css('opacity', value);
};
var getAnimationValues = function (visible) {
var result = {
visibility: visible
};
result.opacity = visible === 'visible' ? 1 : 0;
};
var mouseActionHandler = function ($element, visible, opacityValue) {
$element
.stop()
.css("visibility", 'visible')
.animate(getAnimationValues(visible),
3000,
function() {
$(this).css("visibility", visible);
opacityWorkaround($(this), opacityValue);
});
};
var onMouseIn = function() {
var $submenu = $(this).children("ul:first");
if ($submenu) {
mouseActionHandler($submenu, 'visible', 1);
}
};
var onMouseOut = function() {
var $submenu = $(this).children("ul:first");
var $global = $('.global').children('ul');
if ($submenu) {
mouseActionHandler($submenu, 'hidden', 0);
} else if ($global) {
setTimeout(function() {
mouseActionHandler($global, 'hidden', 0);
},1500);
}
};
$(selectors.element).hover(onMouseIn, onMouseOut);
我把1500毫秒的延迟和$全局变量是指在菜单子项,我想使disapear与延迟。我想在用户将鼠标光标移出“某些项目>”选项卡时实现此目的。
这是我的小提琴示例。 http://jsfiddle.net/PNz9F/1/
在此先感谢您的帮助!
我想我更接近得到解决方案,以便我在这里再举一个例子 http://jsfiddle.net/8beT8/13/ – kris
这是你要找的吗? http://jsfiddle.net/PNz9F/6/ – Trevor
是Trevor,这是我正在寻找的东西,你节省了几个小时的挖掘。非常感谢!我必须审查条件statc的基础.. – kris