Когда вы загружаете документ без перемещения мыши, никакие действия при наведении курсора не будут переключаться, пока вы не переместите мышь. Но я думаю, что при наведении курсора мыши происходит переключение, если оно уже «над» onLoad.
А как насчет этого кода?
В любом случае, я думаю, что ваша ошибка связана с отсутствием переключения мыши, потому что JS проверяет только каждые x мс, и если вы двигаетесь слишком быстро, он выходит из div без вызова события.
$('#menu ul li').mouseenter(function(){
// hide all other divs
$(".dropdown").hide(0);
// show the div we want
$(this).children(".dropdown").show(0);
}).mouseleave(function(){
$(".dropdown").hide(0);
});
Если вам не нравятся анимации, делать это с помощью CSS всегда лучше, чем с JS.
Вам нужно будет настроить его так:
<div id="menu">
<ul>
<li>
Menu 1
<div class="dropdown">Sub1</div>
<div class="dropdown">Sub2</div>
</li>
<li>
Menu 2
<div class="dropdown">Sub1</div>
<div class="dropdown">Sub2</div>
</li>
</ul>
</div>
CSS:
.dropdown { display: none; position: relative; }
#menu li:hover .dropdown { display: block; }