JQuery输入复选框仅在缺少类时设置类

JQuery输入复选框仅在缺少类时设置类,jquery,input,addclass,Jquery,Input,Addclass,仅当复选框缺少Prexising类时,我才想将类设置为Checkbox。还要注意,它可能包含空类,然后也会用新类覆盖它。 我正在使用以下命令,但如何将条件添加到查找中 $(this).find("input[type='radio'],input[type='checkbox']").addClass('IE8Border'); 我正朝着这个方向努力: $(this).find("input[type='radio'],input[type='checkbox']").each(functio

仅当复选框缺少Prexising类时,我才想将类设置为Checkbox。还要注意,它可能包含空类,然后也会用新类覆盖它。 我正在使用以下命令,但如何将条件添加到查找中

$(this).find("input[type='radio'],input[type='checkbox']").addClass('IE8Border');
我正朝着这个方向努力:

$(this).find("input[type='radio'],input[type='checkbox']").each(function() {
    $(this)[("[class='']")].addClass('IE8Border');
    $(this)[(":not([class])")].addClass('IE8Border');
});

您可以使用hasClass检查是否已添加类

试试这个:

$(this).find("input[type='radio'],input[type='checkbox']").filter(function(){
    return !$(this).hasClass('IE8Border');
}).addClass('IE8Border');
您还可以避免在以下版本中使用筛选器:

$(this).find("input[type='radio']:not(.IE8Border),input[type='checkbox']:not(.IE8Border)").addClass('IE8Border'); 
编辑: 如果您的检查仅针对类的存在,请尝试以下操作:

$(this).find("input[type='radio'],input[type='checkbox']").filter(function(){
  var thisClass = $(this).attr("class");
    return !(thisClass && thisClass.length > 0);
}).addClass('IE8Border');
$(this).find("input[type='radio'],input[type='checkbox']").filter(function() {
   return this.className === '';
}).addClass('IE8Border');

我完全同意塞伯内特的回答。但是,您是只想添加一个类还是要覆盖?对于后者,请尝试:

$("input[type='radio'],input[type='checkbox']",this).filter(function(){
    var thisClass = $(this).attr("class");
    return !(thisClass && thisClass.length > 0);
}).removeAttr('class').addClass('IE8Border');
为了扩展Cybernate的答案,您还可以使用
not()
函数,而不是
filter()

$("input[type='radio'],input[type='checkbox']").not('.IE8Border').addClass('IE8­Border');

我不太清楚你在问什么,所以我有两个答案:

如果您试图避免添加重复类(即添加两次
IE8Border
),则无需过滤任何内容
.addClass()
仅当类在元素上不存在时才会添加该类

如果只想将类添加到那些还没有类的元素中,请尝试以下操作:

$(this).find("input[type='radio'],input[type='checkbox']").filter(function(){
  var thisClass = $(this).attr("class");
    return !(thisClass && thisClass.length > 0);
}).addClass('IE8Border');
$(this).find("input[type='radio'],input[type='checkbox']").filter(function() {
   return this.className === '';
}).addClass('IE8Border');

@Cybernate:但是,如果你不知道课程,只是想知道:
如果(已经有一些课程)
?我想这就是问题所在。@Marnix:我完全没有想到。使用该选项更新了帖子。@Cybernate:您也可以执行
$(“输入[type='radio'],输入[type='checkbox'])。而不是('.IE8Border')。addClass('IE8Border')@Cybernate:不,我很好,你跑得更快。不过,你的编辑似乎是这个问题的最佳帖子。@Cybernate:我在问题中读了更多。他还问:我想覆盖旧类。