1

トップレベルのラジオボタンがチェックされるたびに、フォーム要素のエラースタイリングの束をクリアしようとしています。私は見つけようとしています:

  • パフォーマンスを改善するための代替方法と構造
  • すべてのフォーム要素を見つけるための連鎖メソッドなので、あまり多くの呼び出しを行っていません.. (可能かどうかはわかりません)。

    // 以下の関数を呼び出す直前に定義されたグローバル変数またはスコープ変数..

JS

var target = jQuery("#cachedElement");


function functionWithManyReferencesToTarget() {
    target.find("input").each(function() {
    $(this).removeClass("formError error-state");
});
target.find("label").each(function() {
    $(this).removeClass("formError error-state");
});
target.find("select").each(function() {
    $(this).removeClass("formError error-state");
});
}
4

6 に答える 6

6
$target.find('input, label, select').removeClass('formError error-state');
于 2013-01-25T21:23:16.170 に答える
2

removeClass一致したすべての要素を反復し、コンマ ( ,) を使用して複数のセレクターを区切ることができるため、呼び出しを次のように減らすことができます。

$('#cachedElement').find('input, label, select').removeClass('formError error-state');
于 2013-01-25T21:24:00.687 に答える
2

次のようなことはできませんか?

$('.formError').removeClass('formError error-state');
于 2013-01-25T21:24:02.473 に答える
1

これにより、ワンライナーになります。

jQuery("#cachedElement").find("input, label, select").removeClass("formError error-state");
于 2013-01-25T21:48:36.403 に答える
0

jQueryのスーパーchaining機能を使用すると、コードを次のようにクリーンアップできます。

   jQuery("#cachedElement").find("input, label, select").each(function() {
      $(this).removeClass("formError error-state");
   });

これは、それをワンライナーのjavascriptコードにすることはほとんどありません。これがコードの保守に役立つことを願っています。

于 2013-01-25T21:27:50.590 に答える
0

どうですか?

(function($){
    var $target = $('#cachedElement'); // This is confusing

    $target.find('input, label, select').removeClass('formError error-state');
}(jQuery));
于 2013-01-25T21:25:14.827 に答える