【问题标题】:jQuery - function happening too soon or callback process confusionjQuery - 函数发生得太快或回调过程混乱
【发布时间】:2013-04-11 16:36:36
【问题描述】:

尝试.slideUp(),用.html('') 清除元素,然后重新填充元素和.slideDown()。简单的?是的。在职的?没有。

在向上滑动完成之前重新填充元素。从本质上讲,你看到魔术师在幕布到位之前就离开了,这会破坏表演。

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() 中内置的 [complete](回调?)函数,但没有填充任何内容,第二个幻灯片动画也不会触发。

【问题讨论】:

    标签: jquery


    【解决方案1】:

    这里你是立即调用ohReset(),而不是作为回调传递它:

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

    应该是:

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

    【讨论】:

    • 太棒了。非常感谢。
    【解决方案2】:
    $( '#oh_sort' ).change( function()
    {
        $( '#oh_list_cont' ).slideUp( 1000, function()
        {
            $( '#oh_list_cont' ).promise().done( ohReset() );
        } );
        $( '#oh_list_cont' ).slideDown( 1000 );
    });
    

    这样的?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-27
      • 2011-08-06
      • 1970-01-01
      • 2022-01-12
      • 2018-08-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多