1

I'm trying to clear a bunch of error styling on form elements whenever top level radio buttons are checked. 我试图找到:

  • 提高性能的替代方法和结构
  • 一种用于查找所有表单元素的链接方法,因此我不会进行太多调用..(不确定是否可能)。

    // 在调用下面的函数之前定义的全局变量或作用域变量..

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

这个怎么样?

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

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

使用 jQuery 的超级chaining特性,代码可以清理如下:

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

这很难使它成为一个单行javascript代码。希望这可以帮助您更好地维护您的代码。

于 2013-01-25T21:27:50.590 回答