2010-04-30 5 views
12

Tôi đang sử dụng JQuery và những gì tôi muốn xảy ra là.jquery fadeout, tải, fadein

Div mờ dần bằng lệnh fadeOut. Sau đó, tải nội dung từ url bằng lệnh tải. Sau đó, một khi nội dung tải nó mờ dần trở lại bằng cách sử dụng lệnh fadeIn.

Mã tôi có là:

$("#myDiv").fadeOut().load('www.someurl.com').fadeIn() 

Tuy nhiên điều này không hoạt động. Nó loại nhấp nháy sau đó tải ra sau đó tải in Tôi nghĩ rằng vấn đề là mờ dần xảy ra trước khi tải xong.

Tôi nên làm gì

Cảm ơn

Trả lời

11

bạn có thể sử dụng chức năng load() gọi lại như thế này:

bạn có thể muốn sử dụng tình trạng load() gọi để xem mọi thứ đã được hoàn thành đúng cách.

$("#myDiv").fadeOut().load("www.someurl.com", function(response, status, xhr) { 
    if (status == "error") { 
     // handle error 
    } 
    else 
    { 
     $(this).fadeIn(); 
    } 
}); 
+0

Đây có phải là vì "tải" là async và những hành động khác sẽ tiếp tục làm việc? Câu trả lời của bạn sẽ đợi để gọi "fadeIn" sau khi tải báo cáo xong, đúng không? – MrChrister

+0

có, sau khi tải xong, nó sẽ gọi fadeIn() – hunter

5

Sử dụng success gọi lại cho .load(), như thế này:

$("#myDiv").fadeOut().load('www.someurl.com', function() { 
    $(this).fadeIn(); 
}); 
1

bạn cần phải làm như mờ dần trong hàm callback tải do bản chất không đồng bộ của AJAX.

9
$("#myDiv").fadeOut(1000, function() { 
    $("#myDiv").load("www.someurl.com", {limit: 25}, function(){ 
     $("#myDiv").fadeIn(); 
    }); 
}); 

Giới hạn quy định cụ thể thời gian bao lâu để chờ câu trả lời trong cuộc gọi tải