我有一個隱藏/顯示子元素的菜單,其中mouseenter
& mouseleave
,但子元素在頁面加載時顯示。加載隱藏元素,出現在鼠標中的懸停點
我喜歡它,所以頁面加載時不會出現元素,但只在mouseenter
& mouseleave
。
我如何用下面的代碼完成此操作?
$('.side-nav>li.has-flyout', this).on('mouseenter mouseleave', function(e) {
if (e.type == 'mouseenter') {
$('.side-nav').find('.flyout').hide();
$(this).children('.flyout').show();
}
if (e.type == 'mouseleave') {
var flyout = $(this).children('.flyout'),
inputs = flyout.find('input'),
hasFocus = function(inputs) {
var focus;
if (inputs.length > 0) {
inputs.each(function() {
if ($(this).is(":focus")) {
focus = true;
}
});
return focus;
}
return false;
};
if (!hasFocus(inputs)) {
$(this).children('.flyout').hide();
}
}
});
只做$('.side-nav>li.has-flyout').hide();
顯然隱藏了整個導航項。 FWIW我正在使用Foundation 5的框架。
'$( '邊導航> li.has-彈出。')隱藏();'不起作用,因爲這些都不是你的元素躲藏或放映時,但他們的孩子與班'飛出'。爲什麼不''('。side-nav> li.has-flyout')。children('。flyout')。hide();'? – azium
就是這樣!雖然,內容立即出現,然後消失,當頁面加載(而不是完全隱藏)。不理想,但肯定可以服用 – timmyg
只需在CSS中做到這一點。看到我的回答 – azium