如何在不重复jQuery addClass的情况下做得更好?

Mat*_*ead 1 javascript forms jquery

在页面加载时我的表单上我将输入中的默认文本设置为浅灰色,如下所示:

var formInputs = $('#notifyForm input');
formInputs.addClass('defaultText');
Run Code Online (Sandbox Code Playgroud)

然后我让他们使用removeClass在焦点上转回黑色.一切正常.我遇到的问题是,如果出现错误并且页面重新加载以显示PHP错误消息,那么仍在输入中的用户文本将变为灰色.我的解决方案是:

formInputs.addClass(function()
{
    if($(this).attr('value') === $(this).attr('title'))
    {
        $(this).addClass('defaultText');
    }
});
Run Code Online (Sandbox Code Playgroud)

但我知道在addClass处理程序中调用addClass会出现问题.任何人都可以提出更好的方法吗?谢谢.

Ror*_*san 8

从传递给的函数中,addClass您可以返回一个字符串,该字符串将是您要添加的类名.试试这个:

formInputs.addClass(function() {
    if (this.value === this.title)
        return 'defaultText';
});
Run Code Online (Sandbox Code Playgroud)