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

eet 发布于 2019-03-09 jquery 最后更新 2019-03-09 14:40 0 浏览

尝试.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();
}
我已经使用内置于.slideUp()中的[complete](callback?)函数尝试过这种方法,但没有填充任何内容,并且第二个幻灯片动画不会触发。
已邀请:

hipsum

赞同来自:

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

$('#oh_list_cont').promise().done(ohReset());
它应该是:
$('#oh_list_cont').promise().done(ohReset);

xquis

赞同来自:

$( '#oh_sort' ).change( function()
{
    $( '#oh_list_cont' ).slideUp( 1000, function()
    {
        $( '#oh_list_cont' ).promise().done( ohReset() );
    } );
    $( '#oh_list_cont' ).slideDown( 1000 );
});
这样的事情?