如何简单地使用if / else条件代码

时间:2012-08-15 23:28:08

标签: jquery

我正在尝试简化以下脚本。有条件的陈述似乎是多余的有没有人在这帮助我?非常感谢。

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]

    });
  }
}

3 个答案:

答案 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)。