На самом деле проблем нет, поскольку ссылки, которые имеют подменю, никуда не ведут (в отличие от того, куда они идут, вы не можете открыть подменю одним щелчком мыши). Вы можете легко конвертировать их в клики.
однако, вы должны заметить, что вам нужна замена для "mouseout". Вы можете сделать это, добавив обработчик событий в тело. пользователь может щелкнуть любое пустое место за пределами меню, чтобы закрыть подменю. чтобы сделать это, обработчик в теле должен проверить, была ли нажатая на элемент ссылка в меню. если нет, закройте все меню (и если это была ссылка, отличная от меню, перейдите к нему).
Вы можете использовать метод jQuery .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
});
1014 *