独自の jQuery モナディック操作を作成できます。これは ($.* 名前空間の混乱を減らすために) 非常に慎重に使用する必要がありますが、それでも、これを頻繁に行う場合は、これが最もエレガントな方法です。
(function($) {
$.fn.addClassIf = function() {
var args = Array.prototype.slice.call(arguments, 0, -1);
var condition = Array.prototype.slice.call(arguments, -1)[0];
return condition ? this.addClass.apply(this,args) : this;
};
})(jQuery);
デモ:
> $('body')
[<body class="question-page">…</body>]
> $('body').addClassIf('test1', true)
[<body class="question-page test1">…</body>]
> $('body').addClassIf('test2', false)
[<body class="question-page test1">…</body>]
> $('body').addClassIf('test3', true)
[<body class="question-page test1 test3">…</body>]