2012-08-15 25 views
1

我想簡化下面的腳本。條件陳述似乎是多餘的有沒有人在這裏幫助我?非常感謝。如何簡單的if/else條件代碼

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] 

    }); 
    } 
} 
+1

-1那麼,你做了什麼/想出了什麼? **簡化/統一的第一部分是確定哪些是常見的,哪些不是。**(請首先標識此..) – 2012-08-15 23:35:56

回答

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 
}); 
+0

您錯過了其他區別:) prependTo/insertBefore。但你還是對的,這是DRY原則。 – 2012-08-15 23:34:33

+0

@AntonyScott好眼睛 – Musa 2012-08-15 23:36:32

0

設置它只是採取差異,並把if語句周圍的人。有一個原則叫做不要重複自己(簡稱DRY),這在這裏適用。

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