FadeIn/fadeOut на основе логического
Мне было интересно, нужно ли мне писать:
if (status) {
$('#status-image-' + id).fadeIn();
} else {
$('#status-image-' + id).fadeOut();
}
или есть функция, с которой я могу предоставить свой логический статус, например:
$('#status-image-' + id).fade(status);
Я видел fadeToggle, но он не принимает логический параметр состояния.
Ответы
Ответ 1
Нет, нет, но вы можете сделать так:
jQuery.fn.fadeInOrOut = function(status){
return status ? this.fadeIn() : this.fadeOut();
}
а затем назовите его так (см. этот jsfiddle для доказательства):
$('#status-image-' + id).fadeInOrOut(status);
Это то, что вы хотели?
Ответ 2
Самый короткий путь, который я знаю, чтобы написать это, но я нахожу лично отвратительным, вот что:
$('#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()
.