1

私のフォームでは、ページが読み込まれるときに、入力のデフォルトのテキストを次のように薄い灰色にします。

var formInputs = $('#notifyForm input');
formInputs.addClass('defaultText');

次に、removeClass を使用してフォーカスを合わせて黒に戻します。これはすべてうまくいきます。私が遭遇した問題は、エラーが発生し、ページがリロードされて PHP エラー メッセージが表示された場合、入力に残っているユーザーのテキストが灰色になることです。これに対する私の解決策は次のとおりです。

formInputs.addClass(function()
{
    if($(this).attr('value') === $(this).attr('title'))
    {
        $(this).addClass('defaultText');
    }
});

しかし、addClass ハンドラー内で addClass を呼び出すと何か問題があるに違いないことはわかっています。誰でもこれを行うためのより良い方法を提案できますか? ありがとうございました。

4

2 に答える 2

8

渡す関数から、addClass追加するクラス名となる文字列を返すことができます。これを試して:

formInputs.addClass(function() {
    if (this.value === this.title)
        return 'defaultText';
});
于 2013-01-03T11:12:38.697 に答える
1

ロリーによって提供された答えに加えて、:の前の基準によって選択することが可能addClass()です:

 formInputs.filter(function() {
    return this.value === this.title;
 }).addClass('defaultText');

ちなみに、少し驚いたことに、このaddClass()アプローチは方法の約半分の速さ(Chrome 23 / Win XPでは43%遅いfilter())です(ただし、まだかなりマイナーな最適化です)。

参照:

于 2013-01-03T11:27:01.110 に答える