从所有匹配的表单元素中删除一个类...最干净的方法?

时间:2013-01-25 21:20:35

标签: javascript jquery performance methods chaining

每当检查顶级单选按钮时,我都试图清除表单元素上的一堆错误样式。我试图找到:

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

    //在调用下面的函数之前定义的全局变量OR范围变量。

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");
});
}

6 个答案:

答案 0 :(得分:6)

$target.find('input, label, select').removeClass('formError error-state');

答案 1 :(得分:2)

removeClass遍历所有匹配的元素和you can use commas (,) to separate multiple selectors,因此您的调用可以简化为:

$('#cachedElement').find('input, label, select').removeClass('formError error-state');

答案 2 :(得分:2)

你不能只做这样的事情:

$('.formError').removeClass('formError error-state');

答案 3 :(得分:1)

这使它成为一个oneliner:

jQuery("#cachedElement").find("input, label, select").removeClass("formError error-state");

答案 4 :(得分:0)

这是怎么回事?

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

    $target.find('input, label, select').removeClass('formError error-state');
}(jQuery));

答案 5 :(得分:0)

使用jQuery的超级chaining功能,可以按如下方式清除代码:

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

这几乎不能成为一个单行javascript代码。希望这有助于您更好地维护代码。