在页面加载时在我的表单上,我将输入中的默认文本设置为浅灰色,如下所示:
var formInputs = $('#notifyForm input');
formInputs.addClass('defaultText');
然后我让他们使用removeClass在焦点上变回黑色。一切正常。我遇到的问题是,如果出现错误并且页面重新加载以显示PHP错误消息,那么仍在输入中的用户文本将变为灰色。我的解决方案是:
formInputs.addClass(function()
{
if($(this).attr('value') === $(this).attr('title'))
{
$(this).addClass('defaultText');
}
});
但我知道在addClass处理程序中调用addClass会出现问题。任何人都可以提出更好的方法吗?谢谢。
答案 0 :(得分:8)
从传递给addClass
的函数中,您可以返回一个字符串,该字符串将是您要添加的类名。试试这个:
formInputs.addClass(function() {
if (this.value === this.title)
return 'defaultText';
});
答案 1 :(得分:1)
除了Rory提供的答案之外,还可以根据addClass()
之前的标准进行选择:
formInputs.filter(function() {
return this.value === this.title;
}).addClass('defaultText');
顺便说一下,有点令我惊讶的是,addClass()
方法的速度比filter()
方法快一半(在Chrome 23 / Win XP中慢43%)(仍然是一个相当小的优化,虽然)。
参考文献: