2011-11-11 42 views
11

我在想,如果我真的有寫:淡入/淡出根據布爾

if (status) { 
    $('#status-image-' + id).fadeIn(); 
} else { 
    $('#status-image-' + id).fadeOut(); 
} 

或有一個功能,我可以提供我的布爾狀態,是這樣的:

$('#status-image-' + id).fade(status); 

我見過fadeToggle,但它不接受布爾狀態參數。

回答

13

沒有,沒有,但你可以做一個這樣的:

jQuery.fn.fadeInOrOut = function(status){ 
    return status ? this.fadeIn() : this.fadeOut(); 
} 

,然後調用它這樣(見this jsfiddle的證明):

$('#status-image-' + id).fadeInOrOut(status); 

難道你通緝?

+0

不錯,謝謝。你知道一個jsfiddle是否永遠存在,否則它會在某個時候被刪除? – stivlo

+0

@stivlo:沒問題。我不知道任何已被刪除的jsfiddle。你可能會問jsfiddle的開發者,它是否會永久保留,但它們非常可靠,所以我認爲它會保持相當長的一段時間。 – Tadeck

5

我知道寫這個的捷徑,但一個我覺得個人可惡的,是這樣的:

$('#status-image-' + id)[status ? 'fadeIn' : 'fadeOut'](); 

當然,你可以再補充建議的功能直接將jQuery:

(function($) { 
    $.fn.fade = function() { 
     var args = Array.prototype.slice.call(arguments); 
     var status = args.shift(); 
     var func = status ? 'fadeIn' : 'fadeOut'; 
     return $.fn[func].apply(this, args); 
    }; 
})(jQuery); 

這是未經測試 - 我只是當場撞上了它。

提供的第一個參數將是您的status參數 - 其餘參數將傳遞到.fadeIn().fadeOut()