我想只在复选框缺少preexising类时才将类设置为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');
});
答案 0 :(得分:3)
您可以使用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');
答案 1 :(得分:3)
我对你的要求有点不清楚,所以我有两个答案:
如果您尝试避免添加重复的类(即两次添加IE8Border
),则无需过滤任何内容。 .addClass()
只会在该元素上尚不存在的情况下添加该类。
如果你想只为那些还没有类的元素添加一个类,试试这个:
$(this).find("input[type='radio'],input[type='checkbox']").filter(function() {
return this.className === '';
}).addClass('IE8Border');
答案 2 :(得分:1)
我完全同意Cybernate的回答。但是你只想添加一个类还是要覆盖?对于后一个尝试:
$("input[type='radio'],input[type='checkbox']",this).filter(function(){
var thisClass = $(this).attr("class");
return !(thisClass && thisClass.length > 0);
}).removeAttr('class').addClass('IE8Border');
并且为了扩展Cybernate的答案而不是filter()
,您还可以使用not()
函数。
$("input[type='radio'],input[type='checkbox']").not('.IE8Border').addClass('IE8Border');