你這個過於複雜,只需使用addClass()
與匿名函數:
$('input').addClass(function() {
return this.value == '' ? 'empty' : '';
});
JS Fiddle demo。
明顯地改變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 Fiddle demo。
,其次,更簡明的方法即相當於上述:
$('input:button').click(function() {
$('input').each(function(){
$(this)[this.value == '' ? 'addClass' : 'removeClass']('empty');
});
});
JS Fiddle demo。
這利用了以下事實的優點某個對象的方法可以同時使用符號形式Object.propertyName
和Object['propertyName']
也使用運行在那些方括號條件(三元)運算的能力,以確定被訪問,是否addClass()
或removeClass()
應該使用方法來處理以下括號中提供的empty
類名。
參考文獻:
你能解釋第二條線。什麼是空引號和問號?對不起,我是初學者,所以我只是想學習。 – 2013-03-05 00:33:21
這是一個[三元(或條件)操作符](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Conditional_Operator)。返回的值取決於對條件的評估;如果條件爲「真」,則返回第一個值「empty」,如果爲「false」,則返回空字符串「'」。 – 2013-03-05 00:34:47
@David - 我認爲你也需要在適當的時候刪除這個類。我在四個字段中的兩個字段中輸入了值,然後單擊提交按鈕,兩個空字段按照它們應該顯示的高亮顯示。然後我輸入其中一個,再次點擊提交按鈕,並且這兩個字段保持高亮顯示。 – 2013-03-05 00:50:37