如何在Jquery中调用外部函数

How to call outside function inside animate complete function in Jquery

本文关键字:调用 外部 函数 Jquery      更新时间:2023-09-26

我有以下代码在我的一个网站。我有一个名为"pressedTab(tab)"的声明函数。

当我试图调用它下面的动画完整的函数,$('#firstShow').animate({'margin-left':'-='+go+'px'}, 1000, 'linear',function() {...pressedTab(tab);}它不工作。

我知道这是一个范围的事情,但有人能帮我修复代码吗?奇怪的是,这个代码多年来一直有效。去年它的工作不正常。

<script type="text/javascript">
$(document).ready(function () {
    $('.tab1').click(function () {
        name('tab1');
    });
    $('.tab2').click(function () {
        name('tab2');
    });
    $('.tab3').click(function () {
        name('tab3');
    });
    function name(tab) {
        function pressedTab(tab) { //FUNCTION THAT I NEED HELP WITH
            if (tab == 'tab1') {
                $('#img-2 #folder-tab-3').removeClass('zindexUp').removeClass('zindexDown').addClass('zindexDown');
                $('#folder-tab-1').removeClass('zindexUp').removeClass('zindexDown').addClass('zindexUp');
                $('#folder-tab-2').removeClass('zindexUp').removeClass('zindexDown').addClass('zindexDown');
                $('.tab1 p').removeClass('current').addClass('current');
                $('.tab2 p').removeClass('current');
                $('.tab3 p').removeClass('current');
                $('#tug').hide('fast');
                $('#tugImages').hide('fast');
                $('#vessels').show();
                $('#vessels2').hide(0);
            } else if (tab == 'tab2') {
                $('#img-2 #folder-tab-3').removeClass('zindexUp').removeClass('zindexDown').addClass('zindexDown');
                $('#folder-tab-1').removeClass('zindexUp').removeClass('zindexDown').addClass('zindexDown');
                $('#folder-tab-2').removeClass('zindexUp').removeClass('zindexDown').addClass('zindexUp');
                $('.tab1 p').removeClass('current');
                $('.tab2 p').removeClass('current').addClass('current');
                $('.tab3 p').removeClass('current');
                $('#tug').hide('fast');
                $('#tugImages').hide('fast');
                $('#vessels').hide(0);
                $('#vessels2').show();
            } else {
                $('#img-2 #folder-tab-3').removeClass('zindexUp').removeClass('zindexDown').addClass('zindexUp');
                $('#folder-tab-1').removeClass('zindexUp').removeClass('zindexDown').addClass('zindexDown');
                $('#folder-tab-2').removeClass('zindexUp').removeClass('zindexDown').addClass('zindexDown');
                $('.tab1 p').removeClass('current');
                $('.tab2 p').removeClass('current');
                $('.tab3 p').removeClass('current').addClass('current');
                $('#tug').show();
                $('#tugImages').show();
                $('#vessels').hide(0);
                $('#vessels2').hide(0);
            }
        }
        if ($('#firstShow').attr('time') == "0") {
            var go = "250";
            $('#firstShow').animate({
                'margin-left': '-=' + go + 'px'
            }, 1000, 'linear', function () {
                $(this).attr('time', "1");
                $('.tab1').attr('time', "1");
                $('.tab2').attr('time', "1");
                $('.tab3').attr('time', "1");
                //Show the right folder
                $('#folder-tab-1').show("fast");
                $('#folder-tab-2').show("fast");
                $('#img-2 > #folder-tab-3').show("fast");
                //Hide the Upper of the folder
                $('#img-1').hide("fast");
                $('#firstShow #folder-tab-3').hide("fast");
                //alert(tab);
                pressedTab(tab); //FUNCTION WHERE I WOULD LIKE TO BE CALLED BUT IT'S NOT
            });
        } else {
            pressedTab(tab);
        }
    }
});
</script>

animate(...)中的回调函数将在name(tab)之后调用,该上下文中不能访问name(tab)函数的作用域,但它可以访问全局作用域。试着把pressedTab(tab)放在$(document).ready(...)之外,它应该工作