如何在需要单独的函数调用时优化/避免javascript中的切换条件

时间:2012-10-03 20:19:30

标签: javascript jquery optimization prototypejs

几分钟前我最终得到了这段代码,这让我想知道是否会有一种优雅的方式将它优化为更少的线条,可选择的奖励可能会避免切换条件。

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

是否可以进一步优化此代码?如果是的话,你会如何实现它?

编辑:我应该包含一些关于我正在使用的库/库的信息。事实上我使用两者,但在这个例子中我使用原型,因为我更喜欢用它来处理CSS类名。无论如何,在我的具体情况下,解决方案是在Prototype还是jQuery中提供并不重要。谢谢大家!

1 个答案:

答案 0 :(得分:4)

对于prototypejs:

如果orientation10,请使用带有switch参数的函数进行适当切换。

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);