Jquery 如何简化if/else条件代码

Jquery 如何简化if/else条件代码,jquery,Jquery,我试图简化以下脚本。有条件的陈述似乎多余这里有人帮我吗?非常感谢 function createHelpImage(element, elementType){ $element = $(element); if(elementType=='img'){ $(document.createElement('img')) .attr({src:'inc/images/help_bubble.png', title:'help Image', 'class': 'help

我试图简化以下脚本。有条件的陈述似乎多余这里有人帮我吗?非常感谢

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]

    });
  }
}

只需从if/else中删除冗余代码,使用变量保存的
值,然后在

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

只要把这些区别放在if语句中就可以了。这里有一个原则叫做“不要重复你自己”(简称“干”),适用于这里。

尝试使用最后一行的:

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

您错过了另一个区别:)prependTo/insertBefore。但是你仍然是对的,这是干的原则。-1那么,你做了什么/想出了什么?简化/统一的第一部分是确定哪些是通用的,哪些不是。(请先确定此…)