用最少的代码模仿jQuery .toggle()?

时间:2013-01-23 22:12:35

标签: jquery events javascript-events

从jQuery 1.8开始,.toggle()实用程序函数已被弃用,我正在寻找一个无法用于模仿其功能的quickie代码段。我查看了一个建议的解决方案here,但我发现它太冗长了。

我想知道我是否应该切换自定义类名并执行.on() / .off(),或者是否应该跟踪布尔值?

在我看来,我认为我应该能够在一个.on()事件地图中完成所有这一切......

以前是否有人在此处完成并可以共享片段?

修改

我必须说,当人们如此积极地投票时,这有点令人恼火。是的,一些类似的片段是关于SO的,但这里的问题是关于最小化代码。旧的jQuery .toggle()是一个很简单的方法,我只是在寻找关于最佳方法的一些指示。

我想出的是:任何人都有想法如何避免使用全局变量来跟踪我的点击状态?

g.toggler = 0;
$(document).on({
    click : function(){
        g.toggler++;
        if(g.toggler%2==1){
            console.log('forth');
        } else {
            console.log('back');
        };
    }
});

1 个答案:

答案 0 :(得分:2)

将切换值存储在元素的数据对象中。

http://jsfiddle.net/HNxFx/

$(document).on({
    click:function(){
        var toggle = $(this).data("toggler", !$(this).data("toggler")).data("toggler");
        if(toggle){
            console.log('forth');
        } else {
            console.log('back');
        };
    }
});