我计划通过switch语句对JS代码进行分组。我想这将超过50个案例。
这种情况太多了吗?如果我的担心是正确的,那么switch语句应该处理多少个案例?
//修改
就fancybox而言,我想通过在函数中使用switch语句对它们进行分组,如下所示:
function openFancybox(object){
switch(object)
{
case '.edit':
width = 900;
height = 400;
break;
case '.friend':
width = 700;
height = 300;
break;
case '.follow':
width = 'auto';
height = 'auto';
break;
case '.global':
width = 'auto';
height = 'auto';
break;
}
$(object).fancybox({
'titlePosition' : 'inside',
'transitionIn' : 'none',
'transitionOut' : 'none',
'centerOnScroll' : true,
hideOnOverlayClick:false,
hideOnContentClick:false,
'autoDimensions': false,
'centerOnScroll' : true,
'width': width,
'height': height,
});
}
答案 0 :(得分:3)
在这种特殊情况下,我选择了map(JS Object)解决方案,其中键是classNames,值是[width,height]结构的数组。例如:
var fancyBoxSettings = {
edit: [900, 400],
friend: [700, 300],
some: [42, 42],
more: [420, 420]
};
...尽量减少重复代码(所有这些width =, height =
,break
等)。然后我会使用辅助函数管理这些值的检索:
function getFancyBoxDimensions(className) {
var dimensions = fancyBoxSettings[className] || ['auto', 'auto'];
return { width: dimensions[0], height: dimensions[1] };
}
所以它可以像这样使用:
var fbxSettings = {
titlePosition : 'inside',
transitionIn : 'none',
transitionOut : 'none'
// ...
};
$.extend(fbxSettings, getFancyBoxDimensions(className));
$('.' + className).fancybox(fbxSettings);