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

ifthe 句と the句の唯一の違いは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 に答える