2012-01-26 7 views
7

To jest mój kod:jquery .hide() fadeIn()

$('.items').html(response).hide().fadeIn(); 

Problem polega na tym, że kiedy ten jest ładowany do strony "przeskakuje" w górę z powodu, że .hide() .. jest tam jakiś inny sposób to zrobić?

+2

Dlaczego masz Hide() dwa razy? Gdy zostanie ukryty, powinien pozostać ukryty, dopóki nie pokażesz() go ponownie. – danwellman

+0

Och ... moje złe .. tylko literówka ... zmieni pytanie! – Mackelito

+0

Czy elementy ".items" są widoczne po załadowaniu strony (a następnie, prawdopodobnie, zaktualizowane przez wywołanie ajax)? Czy pomysł ukrywania i zanikania zwraca uwagę na właśnie zaktualizowany bit? – nnnnnn

Odpowiedz

17

Można użyciu krycie zamiast jeśli chcesz zachować wymiary elementu nienaruszonego:

$('.items').html(response).css({'opacity':0}).animate({'opacity':1}); 
+0

Czysto i prosto .. dlaczego nie pomyślałem o tym? ;) Dzięki! – Mackelito

+0

Bez problemu koleś :) –

+1

Dowiedziałem się, że to też działa ... jest szybsze niż drugie? $ (odpowiedź) .hide(). AppendTo (ajaxElement) .fadeIn(); – Mackelito

4

Ukryj za pomocą CSS, a następnie znikną ją w razie potrzeby:

css:

.items { 
    display:none; 
} 

JavaScript

$('.items').html(response).fadeIn();

+0

Problem polega na tym, że jest to odpowiedź ajax .. są tam elementy pokazujące na stronie ładowanie, że właśnie filtruję – Mackelito

+0

masz kilka innych opcji - zamień HTML i podświetl div, aby pokazać jego zmienione ... dodaj div i przesuń poprzedni div, a następnie przesuń nowy div up .... lub fadeOut()/fadeIn()? – ManseUK

0

Jeśli chcesz pokazać sprawne SLAJDU między istniejącej zawartości i nowe, spróbuj wykonać następujące czynności:

$(function(){ 
    $('.items').fadeOut(function(){ 
     $(this).html(response).fadeIn(); 
    }) 
}); 
1

To jest czystsze rozwiązanie, ponieważ unika się migający efekt element dodany jest pierwszy, a następnie szybko konieczności jego krycie ustawiony na 0.

ten sposób elem jest dodana już mającą krycie 0.

var elem = $(response).css({'opacity': 0}); 
$('.items').html(elem); 
elem.animate({'opacity': 1});