2013-04-11 72 views
1

嘗試到.slideUp(),清除元素與.html(''),然後重新填充元素和.slideDown()。簡單?是。加工?編號爲jQuery - 函數發生得太快或回調進程混淆

元素在完成向上滑動之前重新填充。基本上,你看到魔術師在幕布放置之前就離開了,這會破壞演出。

的jsfiddlehttp://jsfiddle.net/Zt6gw/

jQuery的

$('#oh_sort').change(function(){ 
    $('#oh_list_cont').slideUp(1000); 
    $('#oh_list_cont').promise().done(ohReset()); 
    $('#oh_list_cont').slideDown(1000); 
}); 

function getOpenhouse(){ 
    var data = $('#oh_sort').val(); 
    if(data == 'date'){ 
     $('#oh_list_cont').append('WOOOOOOORK!'); 
    } 
    if(data == 'price'){ 
     $('#oh_list_cont').append('Please?!'); 
    } 
    if(data == 'city'){ 
     $('#oh_list_cont').append('OMGWTFBBQ'); 
    } 
} 

function ohReset() { 
    $('#oh_list_cont').html(''); 
    getOpenhouse(); 
} 

我已經與內置於.slideUp()[完整](?回調)函數想這一點,但再沒有什麼填充而第二張幻燈片動畫不會觸發。

回答

5

在這裏,你在呼喚ohReset()立即改爲將它作爲一個回調的:

$('#oh_list_cont').promise().done(ohReset()); 

它應該是:

$('#oh_list_cont').promise().done(ohReset); 
+0

太棒了。非常感激。 – Plummer 2013-04-11 16:40:01

0
$('#oh_sort').change(function() 
{ 
    $('#oh_list_cont').slideUp(1000, function() 
    { 
     $('#oh_list_cont').promise().done(ohReset()); 
    }); 
    $('#oh_list_cont').slideDown(1000); 
}); 

這樣的事情?