jquery切换中的多个函数

时间:2016-04-28 06:49:55

标签: jquery

我在jquery toggle函数中看到了多个函数,但我无法理解它们的执行流程。即使jquery官方网站上没有任何文档。

这是功能: -

 $('#menu-toggle').toggle(
    function() {
        console.log('toggle 1 fn');
        $('body').addClass('left-side-collapsed').removeClass('sidebar-colors');
        $('#sidebar .slimScrollDiv').css('overflow', 'initial');
        $('#sidebar .menu-scroll').css('overflow', 'initial');
    }, function() {
        console.log('toggle 2 fn');
        $('body').removeClass('left-side-collapsed')
        $('#sidebar .slimScrollDiv').css('overflow', 'hidden');
        $('#sidebar .menu-scroll').css('overflow', 'hidden');
    }
);

1 个答案:

答案 0 :(得分:2)

用于获取多个参数的toggle()方法,每个参数都是一个函数,它将在单击元素时依次执行。

从jQuery 1.8开始,这个模式现已被弃用,从1.9开始,它已完全从源代码中删除。要复制它,您需要检查元素上当前的类并自行切换,如下所示:

$('#menu-toggle').click(function() {
    if ($('body').hasClass('left-side-collapsed')) {
        $('body').removeClass('left-side-collapsed')
        $('#sidebar .slimScrollDiv, #sidebar .menu-scroll').css('overflow', 'hidden');
    } else {
        $('body').addClass('left-side-collapsed').removeClass('sidebar-colors');
        $('#sidebar .slimScrollDiv, #sidebar .menu-scroll').css('overflow', 'initial');
    }
});

或者,您可以使用original source code自己将以前的toggle()实现添加回jQuery。但请注意,这是未经测试和过时的,可能会干扰其他方法,或依赖于不再存在的方法。