Задать вопрос

JQuery .animate при событии hover для одинаковых элементов?

Подскажите пожалуйста вариант решения следующей проблемы:



Есть несколько div'ов расположенных на странице. нужно сделать так, чтобы при наведении на один все остальные становились полу-прозрачными, а при уходе с него прозрачность исчезала



Для этого использую следующий код

$('div').hover(<br>
    function() {<br>
        $('div').not(this).animate({opacity: 0.15}, 700);<br>
    },<br>
    <br>
    function() {<br>
        $('div').not(this).animate({opacity: 1}, 300);<br>
    }<br>
);<br>




Но проблема в том, что при быстром передвижении курсора через несколько элементов все начинает мигать абы как. А мне нужно этого избежать. В общем проще один раз увидеть. Попробуйте передвигать курсор медленного с одного элемента (или с пустого места) на другой. В медленном варианте все как и должно быть, а вот в быстром — нет.



Важным условием является тот факт, что прозрачности не должно быть когда курсор находится вне div'ов



Заранее спасибо!
  • Вопрос задан
  • 14144 просмотра
Подписаться 8 Оценить Комментировать
Решения вопроса 1
skorney
@skorney
Особо нет времени проверять, но думаю что переделать нужно в таком ключе:
$('div').not(this).stop(true, true).animate({opacity: 0.15}, 700);

api.jquery.com/stop/
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
freeek
@freeek
Если на этот же див потребуется повесить ещё какие-то действия, я бы посоветовал использовать такую конструкцию:

$('div').on({

   mouseenter: function () {

      //stuff to do

   },

   mouseleave: function () {

      //stuff to do

   }
});
Ответ написан
Комментировать
NeX
@NeX
А для нормальных браузеров лучше сделать на css jsfiddle.net/tU8Qn/2/
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы