Как преобразовать «эффект наведения» в «эффект щелчка» в jQuery? - PullRequest
0 голосов
/ 11 марта 2012

Я знаю, как это звучит, но можно ли изменить эффект наведения на щелчок с помощью jquery?

У меня есть этот сайт , и если вы посмотрите на меню (особенно на электронную), вы увидите, что оно работает на пылесосе.К сожалению, ни одно из устройств с сенсорным экраном не использует пылесос, поэтому я хотел бы преобразовать его в меню щелчка вместо пылесоса.Есть идеи, как это сделать с помощью jquery?

1 Ответ

0 голосов
/ 11 марта 2012

На самом деле проблем нет, поскольку ссылки, которые имеют подменю, никуда не ведут (в отличие от того, куда они идут, вы не можете открыть подменю одним щелчком мыши). Вы можете легко конвертировать их в клики.

однако, вы должны заметить, что вам нужна замена для "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 *

...