2010-06-06 20 views
5

To dziwne. Mam animację, która rozpoczyna się, gdy i .hover na DIV. W tym dziale mam inną pozycję absolutną, którą chcę przesunąć w górę, aż mysz pozostanie na głównym dziale i zejdzie na dół w twojej pozycji, gdy wyjdę z głównego div. Prosty efekt najechania. Mam zapisać tę funkcję, która działa dobrze oprócz dziwnego błędu.Jquery animate bottom problem

  var inside = $('.inside') 

     inside.hover(function() { 
      $(this).children(".coll_base").stop().animate({ 
       bottom:'+=30px' 
      },"slow") 
      }, function() { 
      $(this).children(".coll_base").stop().animate({ 
       bottom:'-=30px' 
      },"slow"); 
      }); 

Potrzebuję + = 30 i - = 30, ponieważ muszę zastosować tę funkcję do zakresu div z innym dnem. Problem polega na tym, że jeśli umieściłem wskaźnik myszy na DIV, to jednak po zmniejszeniu wartość dolna każdej animacji. Jeśli idę w górę iw dół od głównego div widzę, że animowany div schodzi nawet poza główny div. Myślę, że brakuje mi czegoś, aby rozwiązać ten błąd. Dzięki za pomoc

Odpowiedz

5

Jeśli początkowo bottom nie jest 0, możesz zapisać początkową wartość dolną i użyć jej w drugiej funkcji. (Jeśli początkowy bottom jest 0, a tylko jej użyć.)

W poniższym przykładzie, początkowy bottom pozycji przechowuje się przy użyciu atrybutu data() do inside, to jest pobierane z drugiego uchwytu do powrotu do położenia pierwotnego .

żywo przykład:http://jsfiddle.net/VAsZZ/

var inside = $('.inside'); 

inside.hover(
    function() { 
     if(!inside.data('bottom')) { 
      inside.data('bottom',$(this).children(".coll_base").css('bottom')); 
     } 
     $(this).children(".coll_base").stop().animate({ bottom:'+=30px' },"slow") 
    }, 
    function() { 
     $(this).children(".coll_base").stop().animate({bottom:$(this).data('bottom') },"slow"); 
    } 
);​ 
+0

dziękuję! działa świetnie! – andrea

+0

@andrea - Nie ma za co. : o) – user113716

0

Nie sądzę, można użyć względnej (- = 30px i + = 30px) wartości w tym przypadku, jak animacja może zatrzymać w dowolnym punkcie, który wyrzuci animacje, które go śledzą. Najlepiej wywołać each() w dopasowanym zestawie, obliczyć poprawne przesunięcia i przekazać wartości bezpośrednio do funkcji najeżdżania.

Powiązane problemy