На самом деле, нет проблем, так как ссылки, которые имеют подменю, никуда не идут (в отличие от них, куда-либо, вы не можете открыть подменю одним щелчком). вы можете легко преобразовать их в клики.
Однако, вы должны заметить, что вам нужна замена для «mouseout». вы можете сделать это, добавив обработчик события в тело. пользователь может щелкнуть любое свободное место вне меню, чтобы закрыть подменю. для этого обработчик в теле должен проверить, был ли элемент щелчком ссылки в меню. если нет, закройте все меню (и если это была ссылка, отличная от меню, перейдите к ней).
вы можете использовать метод jQuery's .on()
для добавления обработчиков родительскому элементу для дочернего элемента.
DEMO
click anywhere in the body
<ul class="menu">
<li>
<a href="#">click me, i am inside, i have a submenu</a>
</li>
</ul>
<a class="outside" href="#">i am outside with no submenu, you can redirect</a>
$('body').on('click', function() {
alert('body clicked, close menus');
});
$('.menu a').on('click', function() {
alert('link clicked, open my submenu');
return false; //prevent further code execution, prevent body's handler
});
$('a.outside').on('click', function() {
alert('outside link clicked, go to page');
return false; //prevent further code execution, prevent body's handler
});
вы можете быть более обманчивым, я вроде новичок в JQuery:/ –
обновляется с демо – Joseph
Спасибо, но все-таки что-то не так, потому что я могу нажать но эффект зависания все еще включен, и я не могу добраться до второго ребенка в e-rowery. –