几分钟前我最终得到了这段代码,这让我想知道是否会有一种优雅的方式将它优化为更少的线条,可选择的奖励可能会避免切换条件。
switch(orientation){
case 'l':
$('landscapeButton').addClassName('active');
$('portraitButton').removeClassName('active');
break;
default:
$('landscapeButton').removeClassName('active');
$('portraitButton').addClassName('active');
}
是否可以进一步优化此代码?如果是的话,你会如何实现它?
编辑:我应该包含一些关于我正在使用的库/库的信息。事实上我使用两者,但在这个例子中我使用原型,因为我更喜欢用它来处理CSS类名。无论如何,在我的具体情况下,解决方案是在Prototype还是jQuery中提供并不重要。谢谢大家!
答案 0 :(得分:4)
对于prototypejs:
如果orientation
为1
或0
,请使用带有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);