Отключить наведение на клик - PullRequest
1 голос
/ 19 августа 2011

У меня есть div с неупорядоченным списком внутри, который сдвигается влево при щелчке элемента LI.

<div id="products">
<ul>
<li><a href="">Product 1</a></li>
<li><a href="">Product 2</a></li>
<li><a href="">Product 3</a></li>
</ul>

Проблема заключается в том, что при нажатии на элемент списка, div скользит влево и когда он скользит подкурсор mosue, он запускает анимации при опрокидывании всех элементов списка по мере их прокрутки.

Есть ли способ отключить JavaScript на элементах при нажатии?

Я пробовал это:

$("#products li a").click(function(event){
event.preventDefault();
});
}

Но, похоже, это не работает, поскольку анимация все еще продолжается в других элементах списка при наведении курсора?

Ответы [ 2 ]

1 голос
/ 19 августа 2011

Вы можете отсоединить событие hover от элементов списка, когда в вашем событии клика:

$("#products li a").click(function(){
    $("#products").find('li').unbind('mouseenter');
});

Этот бит кода предполагает, что вы привязываетесь к событию mouseenter (в отличие от события mouseover).

Затем вы можете повторно применить обработчик события наведения к элементам списка после завершения анимации, если хотите использовать функцию обратного вызова в вызове анимации:

$("#products").animate({left: '-=100px'}, function () {
    $("#products").find('li').bind('mouseenter', function () {
        //add hover code here
    });
});
0 голосов
/ 19 августа 2011

Вы можете установить переменную в глобальной области видимости на true в onclick и в onmouseover обернуть все это в if (!varSetOnClick) {?Не самое изящное решение, но оно бы сработало ...

...