2012-08-15 36 views
1

我想简化下面的脚本。条件陈述似乎是多余的有没有人在这里帮助我?非常感谢。如何简单的if/else条件代码

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] 

    }); 
    } 
} 
+1

-1那么,你做了什么/想出了什么? **简化/统一的第一部分是确定哪些是常见的,哪些不是。**(请首先标识此..) – 2012-08-15 23:35:56

回答

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 
}); 
+0

您错过了其他区别:) prependTo/insertBefore。但你还是对的,这是DRY原则。 – 2012-08-15 23:34:33

+0

@AntonyScott好眼睛 – Musa 2012-08-15 23:36:32

0

设置它只是采取差异,并把if语句周围的人。有一个原则叫做不要重复自己(简称DRY),这在这里适用。

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