-1

jQuery 1.8 の時点で、この.toggle()ユーティリティ関数は非推奨になりました。私は、その機能を模倣するクイック スニペットが役に立たないように、SO を見渡しています。ここで提案された解決策を見ましたが、冗長すぎることがわかりました。

カスタム クラス名を切り替えて.on()/を実行する必要があるの.off()か​​、それともブール値を追跡する必要があるのだろうか?

.on()心の中では、1 つのイベント マップですべてを実行できるようにすべきだと考えています...

ここで誰かが以前にそれを行ったことがあり、スニペットを共有できますか?

編集

私が言わなければならないのは、人々が積極的に質問に反対票を投じると、少しイライラすることです. はい、いくつかの同様のスニペットが SO にありますが、ここでの質問はコードの最小化に関するものです。古い jQuery.toggle()は簡単な方法でした。最善の方法についてのヒントを探していました。

私が思いついたのはこれです:グローバル変数を使用してクリック状態を追跡するのを避ける方法を知っている人はいますか?

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

1 に答える 1

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');
        };
    }
});
于 2013-01-23T23:02:46.350 に答える