简单的jQuery回调在IE中破解

时间:2010-03-02 20:14:32

标签: jquery internet-explorer callback undefined

我有一些这样的功能:

$(this).find('.subnav').fadeIn(200, buttonHide );

现在, buttonHide ,在这种情况下,是我在别处声明的函数。一旦200ms fadeIn完成,我想调用该函数。

大。适用于FF和Safari。但是,在IE中,它返回一个未定义的错误。事实上,我在Ariel Flesler的 scrollTo 中使用了onAfter函数经历了相同的问题... ...给出了什么?

我需要做些什么才能运行这些回调?

编辑:这是包含该功能的代码。这个页面在上面的片段之后被称为...我有点像菜鸟;那是问题吗?直到所有东西都加载完毕之后才会运行。

jQuery(function( $ ){

    /* BEGIN MENU SCROLLER INITIALIZATION */

        // Resets pane
    $('.menuClip').scrollTo( 0 );

    // scrolls to active item to 
    $('body:not(.archive) .menuClip').stop().scrollTo( $('.current_page_item') );

    $('.menuDown').click(function(){
        $('.menuClip').stop().scrollTo( '+=70px', 800, {
            onAfter:function(){
                buttonHide();
            },
        });
    });
    $('.menuUp').click(function(){
        $('.menuClip').stop().scrollTo( '-=70px', 800, {
            onAfter:function(){
                buttonHide();
            },
        });
    });

/* END MENU SCROLLER INITIALIZATION */  

});

$(buttonHide = function() {
    setTimeout(function(){
        var elemM = $(document).find('.menuClip:visible');
        if (elemM[0].scrollHeight - elemM.scrollTop() == elemM.outerHeight()) {
            $('.menuDown').animate({"opacity":"0"}, 200);
        } else {
            $('.menuDown').animate({"opacity":"1"}, 200);
        }

        if (elemM.scrollTop() == 0) {
            $('.menuUp').animate({"opacity":"0"}, 200);
        } else {
            $('.menuUp').animate({"opacity":"1"}, 200);
        }
    }, 200);
});

1 个答案:

答案 0 :(得分:4)

我注意到的一件事:回电后的逗号破坏IE:

$('#move_this_up').click(function(){
    $('#content').stop().scrollTo( '-=270', 1000,
        { onAfter:function(){
            inactiveContentStates();
        }, // COMMA BAD!!!!
    });
});

在调用函数并删除逗号之前声明函数有帮助。

希望这对别人有用!