javascript - 将两个函数绑定(bind)到 jQuery 中的一个按钮

标签 javascript jquery

所以我在点击这个按钮时遇到了一些麻烦......

它不是很好,因为 baseexpand 和 fullcollapse 应该是类,但我没有足够的技能重新编写一整套函数来适应它,因为它们有大约 50 个依赖项。

总而言之,这里有两个函数....

// Full collapse
$( '#fullcollapse' ).click(function(){
    $( '#menu' ).multilevelpushmenu( 'collapse' );
});

// Base expand
$( '#baseexpand' ).click(function(){
    $( '#menu' ).multilevelpushmenu( 'expand' );
});

它们展开和折叠侧边栏菜单....我有 2 个按钮,看起来像这样....

    <a id="fullcollapse" class="nav-toggle" role="button" href="#"><span></span></a>

<a id="baseexpand" class="nav-toggle" role="button" href="#"><span></span></a>

我想将这些按钮变成一个切换按钮,每次点击时在 id 之间切换。

我现在已经连续阅读了大约 6 个小时的文档,并试图研究它,但无法解决这个问题。请帮忙

最佳答案

尝试用这个包装器编写你的函数

var toggle = function (funcA, funcB) {
    var flag = true;
    return function () {
        if (flag) {
            funcA();
        } else {
            funcB();
        }
        flag = !flag;
    };
};

应用它

$('#btn').click(toggle (function (){
    $('#menu').multilevelpushmenu( 'collapse' ); // happens 1, 3, 5, 7, ...   time clicked
}, function (){
    $('#menu').multilevelpushmenu( 'expand' );   // happenes  2, 4, 6, 8, ... time clicked
}));

bonus 我重新实现了 toggle 以便能够传播返回值。

var toggle = function (a, b) {
    var togg = false;
    return function () {
        // passes return value back to caller
        return (togg = !togg) ? a() : b();
    };
};

关于javascript - 将两个函数绑定(bind)到 jQuery 中的一个按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30386333/

相关文章:

Javascript,使用数组翻译日期

javascript - Node.js,将对象存储在内存或数据库中?

javascript - 将 javascript 生成的框架转换为 div

javascript - 自动滚动到表格底部

Javascript算法向文本框添加数字

javascript - 如何将切换 slider 内容的顶部滚动到视口(viewport)中心?

javascript - 如何使用 JS 自动填写 Google 表单并随机填写

javascript - 克隆时使用 jQuery 删除第一类

Jquery 子元素计数

php - 在 ajax 调用后使用 PHP 重定向