2012-01-26 31 views
7

Đây là mã của tôi:jquery .hide() fadeIn()

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

Vấn đề là khi điều này được nạp trang "nhảy" lên do rằng .hide() .. là có một số cách khác để làm điều này?

+2

Tại sao bạn đã có hide() hai lần? Một khi nó được ẩn nó nên ở lại ẩn cho đến khi bạn hiển thị() nó một lần nữa – danwellman

+0

Oh .. xấu của tôi .. chỉ là một lỗi đánh máy .. sẽ chỉnh sửa câu hỏi! – Mackelito

+0

Các phần tử ".items" có thể nhìn thấy khi tải trang (và sau đó, có lẽ, được cập nhật qua cuộc gọi ajax)? Ý tưởng về ẩn và mờ dần có thu hút sự chú ý đến bit đã được cập nhật không? – nnnnnn

Trả lời

17

Bạn có thể sử dụng opacity thay vì nếu bạn muốn giữ lại kích thước của phần tử còn nguyên vẹn:

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

Sạch sẽ và đơn giản .. bây giờ tại sao tôi không nghĩ về điều đó? ;) Cám ơn! – Mackelito

+0

Không có vấn đề dude :) –

+1

Tôi phát hiện ra rằng điều này cũng hoạt động ... là một trong những nhanh hơn mà khác? $ (phản hồi) .hide(). AppendTo (ajaxElement) .fadeIn(); – Mackelito

4

Hide sử dụng CSS và sau đó mờ dần nó trong khi có yêu cầu:

css:

.items { 
    display:none; 
} 

Javascript

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

+0

Vấn đề là đây là một phản ứng ajax .. có các mục hiển thị trên trang tải rằng tôi chỉ lọc – Mackelito

+0

bạn có một vài tùy chọn khác - thay thế HTML và đánh dấu div để hiển thị thay đổi của nó ... gắn thêm div và trượt div trước đó lên và sau đó trượt div mới lên .... hoặc fadeOut()/fadeIn()? – ManseUK

0

Nếu bạn muốn hiển thị một transtion suôn sẻ giữa nội dung hiện có và mới, hãy thử như sau:

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

Đây là một giải pháp sạch hơn vì nó tránh được một hiệu ứng nhấp nháy của nguyên tố này được bổ sung đầu tiên, sau đó nhanh chóng có opacity của nó thiết lập để 0.

Bằng cách này, elem được thêm vào đã có một độ mờ đục của 0.

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