0

私は数分前にこのコードにたどり着きましたが、スイッチ条件を回避するオプションのボーナスを使用して、より少ない行に最適化するエレガントな方法があるかどうか疑問に思いました。

        switch(orientation){
            case 'l':
                $('landscapeButton').addClassName('active');
                $('portraitButton').removeClassName('active');
                break;
            default:
                $('landscapeButton').removeClassName('active');
                $('portraitButton').addClassName('active');
        }

このコードをさらに最適化することは可能ですか? はいの場合、どのようにそれを達成しますか?

編集:使用しているライブラリ/ライブラリに関する情報を含める必要がありました。実際には両方を使用しますが、この例では、CSS クラス名を処理するためにプロトタイプを使用することを好むため、プロトタイプを使用します。いずれにせよ、私の特定のケースでは、ソリューションが Prototype で提供されたか jQuery で提供されたかは問題ではありませんでした。みんなありがとう!

4

1 に答える 1

4

プロトタイプの場合:

がまたはにorientationなる場合は、スイッチ引数を取る関数を使用して適切に切り替えます。10

function safeToggleClass(id, clss, switch) {
    return $(id)[(!!switch ? "add" : "remove") + "ClassName"](clss);
}

safeToggleClass('landscapeButton', 'active', +orientation);
safeToggleClass('portraitButton', 'active', !+orientation);

jQuery の場合:

jQuery には、このスイッチがtoggleClassメソッドに組み込まれています。

$('#landscapeButton').toggleClass('active', +orientation);
$('#portraitButton').toggleClass('active', !+orientation);
于 2012-10-03T20:22:03.407 に答える