jQuery - 功能发生得太快或回调过程混乱

Plu*_*mer 1 jquery

尝试.slideUp()清除元素.html(''),然后重新填充元素和.slideDown().简单?是.工作?没有.

在完成上滑之前重新填充元素.从本质上讲,你会看到魔术师在幕布到位之前离开,这会破坏节目.

jsFiddle:http://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();
}
Run Code Online (Sandbox Code Playgroud)

我用.slideUp()内置的[完整](回调?)函数试过这个,但是没有任何东西填充,第二个幻灯片动画也没有触发.

Pau*_*aul 5

在这里,您ohReset()立即调用而不是将其作为回调传递:

$('#oh_list_cont').promise().done(ohReset());
Run Code Online (Sandbox Code Playgroud)

它应该是:

$('#oh_list_cont').promise().done(ohReset);
Run Code Online (Sandbox Code Playgroud)