我想在下拉菜單中爲一組子項目放置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