3

私はこのようないくつかの機能を持っています:

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

さて、この場合のbuttonHideは、別の場所で宣言した関数です。200 ミリ秒のフェードインが完了したら、その関数を呼び出したいと思います。

偉大な。FF と Safari で動作します。ただし、IE では undefined としてエラーが返されます。実際、Ariel Flesler のscrollToで onAfter 関数を使用して同じ問題を経験しました。

IE がこれらのコールバックを実行できるようにするには、どうすればよいですか?

編集:関数を含むコードは次のとおりです。このページは、上記のスニペットの後に呼び出されます...私は少し初心者です。問題ありますか?とにかく、すべてがロードされるまで何も実行されません。

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);
});
4

1 に答える 1

4

私が気づいたことの1つ:コールバック後のコンマはIEを壊します:

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

関数を呼び出す前に関数を宣言し、コンマを削除すると役に立ちました。

これが他の人にも役立つことを願っています!

于 2010-03-02T21:56:46.963 に答える