我正在使用jQuery来遍历文档中的某些元素。这些元素的类型为<tr>
,类别为.input-row
。某些元素也可以有一个辅助类(例如.input-area
)。jQuery:获得“二级”类
我使用$(".input-row").each()
循环遍历元素,但是如何确定$(this)
元素是否具有“辅助”类,如果是,请获取此名称?
我正在使用jQuery来遍历文档中的某些元素。这些元素的类型为<tr>
,类别为.input-row
。某些元素也可以有一个辅助类(例如.input-area
)。jQuery:获得“二级”类
我使用$(".input-row").each()
循环遍历元素,但是如何确定$(this)
元素是否具有“辅助”类,如果是,请获取此名称?
$(".input-row").each(function(){
$.each($(this).attr('class').split(/\s+/), function(i, v){
if(v !== 'input-row'){
alert(v);
}
});
});
问题问“如何确定$(this)-element是否具有”次要“类,如果是,请获取这个”...“的名称你的例子意味着你已经知道类的名字 –
我编辑了代码,我认为它会做你想要的。 – michaeljdennis
可以使用attr
得到所有类的列表,你可以简单地摆脱类的你来选择的元素:
$(".input-row").each(function() {
var allClasses = $(this).attr("class"),
otherClasses = allClasses.replace("input-row", "");
});
如果元素有两个以上的班,那么你将留下其他类的列表。要将它们分开,您可以在空格中使用split
。
'$(this).attr(“class”)'相当于'this.className'。 – Tomalak
您可以获取元素上的所有类,然后删除您知道存在的类('input-row'),然后您将在该元素上留下任何其他类。
$('.input-row').each(function() {
var classes = $.trim($(this).attr('class').replace('input-row', ''));
if (classes.length > 1) {
alert(classes) // Names of all of the remaining classes
}
}
如果您想单独获取它们,可以使用classes.split('')来获取数组。
我更喜欢声明式的方法。你知道哪些类可以有,所以对他们写的情况:
$(".input-row").each(function() {
var myClasses = this.className.split(" ");
$.each(myClasses, function (i, className) {
if (className != 'input-row') {
alert(className);
}
});
});
:
$(".input-row.input-area").each(/* ... */);
$(".input-row.input-field").each(/* ... */);
如果您由于某种原因不知道类的名字,你可以沿着线提取它
我会去这个
var otherClasses = $('.input-row').attr('class').split(' ');
otherClasses.splice($.inArray("input-row", otherClasses),1);
简单地做这
var otherClasses = $('.input-row').attr('class').replace('input-row', '').split(' ');
由于“输入行”后面的空格,会给你一个额外的字符串,其中有一个空的值。
使用分割。请参阅:http://stackoverflow.com/questions/4239947/jquery-get-second-class-name –
如果您需要*检查*元素的类,你可能会做错什么。现在'class'不再是用来存储数据的 - 它有'data-whatever'(通过jQuery'.data('whatever')')。如果你已经需要这个类来应用格式化,那么使用'hasClass()'检查是绝对正确的。 – ThiefMaster