анимация объектов одного класса, по одному за раз
Я пытаюсь запустить анимационный эффект наведения на все элементы на странице. моя проблема в том, что когда я нависаю над любым из них, это оживляет их всех.
$('div.anime').hover( function() {
$('.box').animate({'do something cool'});
});
Все коробки имеют один и тот же класс anime
. Так что я просто пытаюсь понять, как анимировать только тогда, когда вы зависаете над одним, не давая им всем отдельные классы, которые вы знаете?
Я знаю, что это простой вопрос, но я все еще изучаю способы jQuery :) поэтому, пожалуйста, потерпите меня
Вот HTML:
<div class="anime">
<div class="box">Hey show me! Im cool!</div>
</div>
4 ответа:
Вообще говоря, это можно сделать, используя ключевое слово
this
для указания элемента, который будет наведен, а затем выберите элемент DOM, который вы хотите анимировать по отношению кthis
, перейдя по дереву DOM.Пример
Учитывая следующий HTML
<div class="anime"> <p>other stuff</p> <div class="box"> <p>content</p> </div> </div>
Этот javascript (с помощью jQuery) будет выбирать и анимировать только
.box
, содержащиеся в зависшем на.anime
, потому что я использую.find()
функция для обхода DOM по отношению к$(this)
(элемент, который был завис).$('div.anime').hover( function() { $(this).find('.box').animate({'do something cool'}); });
Вы можете прочитать больше и найти больше функций для обхода DOM здесь.
Попробуйте использовать функцию each из jquery
$( "div.anime" ).each(function(){ $(this).hover( function() { $(this).find('.box').animate({'do something cool'}); }); });
В javascript вы можете захватить цель события с помощью "this". Использование "этого" ограничит метод animate объектом, на который воздействуют.
$('div.anime').hover(function(e){ $(this).animate({'do something cool'}); }, function(){ // dont forget on mouseout $(this).animate({'return to normal state'}); })