我正在尝试简化以下脚本。有条件的陈述似乎是多余的有没有人在这帮助我?非常感谢。
function createHelpImage(element, elementType){
$element = $(element);
if(elementType=='img'){
$(document.createElement('img'))
.attr({src:'inc/images/help_bubble.png', title:'help Image', 'class': 'helpImg'})
.insertBefore($element)
.css({'position':'absolute',
'z-index':999
})
.position({
my: 'left bottom',
at: 'left center',
of: $element
});
}else{
$(document.createElement('img'))
.attr({src:'inc/images/help_bubble.png', title:'help Image', 'class': 'helpImg'})
.prependTo($element)
.css({'position':'absolute',
'z-index':999
})
.position({
my: 'left bottom',
at: 'left center',
of: $element[0]
});
}
}
答案 0 :(得分:2)
尝试使用最后一行的ternary operator:
of: (elementType=='img') ? $elemen : $elemen[0]
这假设在if / else代码块中只有最后一行是不同的。你的代码看起来像这样:
function createHelpImage(element, elementType){
$(document.createElement('img'))
.attr({src:'inc/images/help_bubble.png', title:'help Image', 'class': 'helpImg'})
.insertBefore($element)
.css({'position':'absolute',
'z-index':999
})
.position({
my: 'left bottom',
at: 'left center',
of: (elementType=='img') ? $element : $element[0]
});
}
答案 1 :(得分:1)
只需从if / else中删除冗余代码,使用变量保存of
的值,然后在
$element = $(element);
var of;
var img = $(document.createElement('img'))
.attr({src:'inc/images/help_bubble.png', title:'help Image', 'class': 'helpImg'})
.css({'position':'absolute',
'z-index':999
})
if(elementType=='img'){
img.insertBefore($element);
of = $element;
}
else{
img.prependTo($element);
of = $element[0];
}
img.position({
my: 'left bottom',
at: 'left center',
of: of
});
答案 2 :(得分:0)
只需区分并将if语句置于其中。这里适用的原则是“不要重复自己”(简称DRY)。