如何简化条件语句

时间:2012-09-10 19:29:07

标签: jquery

我正在尝试简化以下条件语句。有没有更好的方法来做到这一点?感谢。

 if ($element.is('#resize')) {
     css.left =+ 20;
     css.top =+ 3;

     if ($('#holder .Main').length < 5 ) {
         img.css('display', 'none');
     }

     img.insertBefore($element);
     img.css(css);

 } else if($element.is('#bt_id3')) {
     css.left =+ 20;
     css.top =+ 3;

     if ($('#id .Main').length < 5 ) {
         img.css('display', 'none');
     }

     img.insertBefore($element);
     img.css(css);
 }

4 个答案:

答案 0 :(得分:2)

ifelse子句之间唯一不同的是内部if中的选择器。你可以这样隔离:

var eltId = false;
if ($element.is('#resize')) eltId = '#holder';
if ($element.is('#bt_id3')) eltId = '#id';
if( eltId !== false ) {
    css.left=+20;
    css.top=+3;
    if($(eltId + ' .Main').length<5){img.css('display', 'none');}
    img.insertBefore($element);
    img.css(css);
}

这让它变得有点干。

答案 1 :(得分:1)

if($element.is('#resize') || $element.is('#bt_id3')){
    var elem = $element.is('#resize') ? $('#holder .Main') : $('#id .Main');
    css.left=+20;
    css.top=+3;
    if(elem.length<5){img.hide();} // USE HERE THE 'elem' VARIABLE and '.hide()'
    img.insertBefore($element);
    img.css(css);
}

答案 2 :(得分:1)

这不会改变任何工作,但它仍然不太漂亮。很多神奇的数字和缺乏评论和背景使得奇怪的代码......

var e = false;
if ($element.is('#resize')) e = $('#holder .Main');
else if ($element.is('#bt_id3')) e = $('#id .Main');

if (e) {
      css.left=+20;
      css.top=+3;
      if (e.length<5) {
          img.css('display', 'none');
      }
      img.insertBefore($element);
      img.css(css);
}

答案 3 :(得分:-1)

快速反应因素产生:

css.left = +20;
css.top = +3;

if ($element.is('#resize')) {
    if ($('#holder .Main').length < 5) {
        img.css('display', 'none');
    }
} else if ($element.is('#bt_id3')) {
    if ($('#id .Main').length < 5) {
        img.css('display', 'none');
    }
}

img.insertBefore($element);
img.css(css);