1

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

 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

5 回答 5

2

if和子句之间唯一不同的else是 internal 中的选择器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);
}

这使它有点干燥。

于 2012-09-10T19:36:48.967 回答
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);
}
于 2012-09-10T19:35:04.323 回答
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);
}
于 2012-09-10T19:36:12.617 回答
0

这里

$element.is("#resize") ? (css.left = 20, css.top = 3, 5 > $("#holder .Main")
.length && img.css("display", "none"), img.insertBefore($element), img.css(css)) : $element.is("#bt_id3") && (css.left = 20, css.top = 3, 5 > $("#id .Main")
.length && img.css("display", "none"), img.insertBefore($element), img.css(css))
于 2012-11-09T00:30:49.410 回答
-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);
于 2012-09-10T19:37:33.530 回答