наведение курсора мыши на jquery mouseover mouseout

#jquery #mouseover #mouseout

#jquery #наведение курсора мыши #вывод курсора мыши

Вопрос:

 $('.rollover').mouseover(function(e){

        e.stopPropagation();

        thisName = $(this).attr('title');

        $('li#' thisName).show(50, 'swing');

    });


    $('.rollover').mouseout(function(e){

        e.stopPropagation();                    

        thisName = $(this).attr('title');

        $('li#' thisName).hide(50, 'swing');

    });
  

У меня есть четыре картинки с классом ‘rollover’, поэтому при наведении курсора мыши на каждую картинку отображается элемент списка, идентификатор которого совпадает с заголовком изображения, а при наведении курсора мыши элемент списка скрывается.

Моя проблема в том, что изображения расположены довольно близко друг к другу, и если мышь входит и выходит слишком быстро, это просто выглядит так, как будто элементы списка мигают. Я бы предпочел, чтобы анимация наведения курсора мыши завершалась до начала следующей анимации наведения курсора мыши и наоборот.

Как бы я это сделал?

JS FIDDLE @ http://jsfiddle.net/callumander/XhpuT /

Комментарии:

1. поместите весь пример на jsFiddle

Ответ №1:

Вместо того, чтобы замедлять работу, завершая каждую анимацию до того, как пользователь сможет просмотреть новый фрагмент контента, почему бы не использовать что-то вроде плагина Hover Intent для предотвращения «случайных» наведений курсора мыши?

Ответ №2:

Попробуйте использовать .queue (непроверенный):

 $('.rollover').mouseover(function(e){
    e.stopPropagation();
    thisName = $(this).attr('title');

    // start the showing once any currently running
    // animations are done
    $('li#' thisName).queue(function() {
        $(this).show(50, 'swing');
        $(this).dequeue();
    });
}).mouseout(function(e){
    e.stopPropagation();                    
    thisName = $(this).attr('title');

    // start the hiding once any currently running
    // animations are done 
    $('li#' thisName).queue(function() {
        $(this).hide(50, 'swing');
        $(this).dequeue();
    });
});