1

尝试用.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](回调?)函数,但是没有填充任何内容,并且第二个幻灯片动画不会触发。

4

2 回答 2

5

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

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

它应该是:

$('#oh_list_cont').promise().done(ohReset);
于 2013-04-11T16:38:33.757 回答
0
$( '#oh_sort' ).change( function()
{
    $( '#oh_list_cont' ).slideUp( 1000, function()
    {
        $( '#oh_list_cont' ).promise().done( ohReset() );
    } );
    $( '#oh_list_cont' ).slideDown( 1000 );
});

像这样的东西?

于 2013-04-11T16:50:35.863 回答