あなたはこれを過度に複雑にしています。単にaddClass()
無名関数で使用してください:
$('input').addClass(function () {
return this.value == '' ? 'empty' : '';
});
JS フィドルのデモ。
明らかに、empty
希望するクラス名のクラス名を変更してください。お察しの''
とおり、:
は空の文字列で、 が( の前の評価)と等しくないthis.value
場合に返されます。''
?
input
コメントに記載されているように、関連する要素が空でなくなったときに追加されたクラスを削除できれば、これはより良いでしょう。それを念頭に置いて、その動作が明らかな単純な方法:
$('input:button').click(function () {
$('input').each(function () {
var that = $(this),
val = that.val();
if (val === '') {
that.addClass('empty');
} else {
that.removeClass('empty');
}
});
});
JS フィドルのデモ。
そして、第二に、上記と同等のより簡潔なアプローチ:
$('input:button').click(function () {
$('input').each(function(){
$(this)[this.value == '' ? 'addClass' : 'removeClass']('empty');
});
});
JS フィドルのデモ。
Object.propertyName
これは、表記形式との両方を使用してオブジェクトのメソッドにアクセスできるという事実を利用していますObject['propertyName']
。また、これらの角括弧内で条件付き (三項) 演算子を実行して、addClass()
またはremoveClass()
メソッドを使用してempty
次の括弧内に指定されたクラス名。
参考文献: