Я пытаюсь использовать jQuery's hover
, чтобы сделать выпадающие меню. Итак, первое, что я пробую:Есть ли лучший способ сделать выпадающие меню в jQuery?
<ul id="menu">
<li>
<ul>
...
</ul>
</li>
...
</ul>
$(" #menu ul ").css({display: "none", visibility: "hidden"});
$(" #menu li ").hover(function() {
$(this).find('ul:first:hidden').css(visibility:"visible", display:"block"}).show('fast');
},
function() {
$(this).find('ul:first').css({visibility:"hidden", display:"none"});
});
и это отлично работает ... в Firefox. К сожалению, в версии Chrome я запускаю (9.0.597.94), если вы наводите курсор на это выпадающее меню, он выталкивает мышь на $ («# menu li #»).
Итак, у нас есть состояние гонки , все, что мне нужно сделать, это добавить некоторые таймеры ...
(function(){
var timer;
$(" #menu li ").hover(function() {
$(this).find('ul:first:hidden').css(visibility:"visible", display:"block"}).show('fast');
},
function() {
var header = $(this);
timer = setTimeout(function() {
header.find('ul:first').css({visibility:"hidden", display:"none"});
}, 100);
});
$(" #menu li > ul ").hover(function() {
clearTimeout(timer);
},
function() {
$(this).css({visibility:"hidden", display:"none"});
});
}();
Который работает реальный большой, пока кто-то говорит we need to put a textbox in that dropdown menu
, и, конечно, текстовое поле вызывает мышь, чтобы огонь на $ (»#menu li> ul "), так что теперь мне нужно поставить еще один вложенный слой таймеров, и я думаю про себя: Должен быть лучший способ сделать это!
Таким образом, я надеялся, что кто-то может понять меня в ...
Вопрос №1: Зачем вам текстовое поле в меню? –
@Paulo вы можете смело предположить, что все «дизайнерские» решения происходят на уровне, который у меня есть 0. Однако для меня это повторяющаяся проблема (выпадающие меню и таймауты), и было бы неплохо, если бы мне было проще создать эти меню. – tzenes