我的元素数量不明,如此:
<div class="item item-1"></div>
<div class="item item-2"></div>
<div class="item item-3"></div>
我想要做的是检查每个项目是否具有以“item-”开头的类名。如果为true,则提取id。像这样:
$("container").each(function
if ($(this).hasClassNameStartingWith("item-"))
console.debug(theId);
);
这怎么可能?
提前致谢!
答案 0 :(得分:5)
在class属性上使用contains选择器:
$('container[class*=" item-"]').each( function() {
var classID = null;
var classes = $(this).attr('class').split( ' ' );
for (var i = 0, len < classes.length; i < len; ++i) {
var class = classes[i];
if (class.match( /^item-/ )) {
classID = class.replace("item-",'');
break;
}
}
if (classID) {
... do something ...
}
});
注意在给定样本标记的情况下使用引号来包含空格。如果“item-N”类可以出现在列表的开头,并且您确定没有任何类会意外地匹配该字符串,您也可以省略该空格。
更新了示例,以说明如何提取类名的标识符部分。
答案 1 :(得分:1)
您可以对子元素“class
属性执行正则表达式匹配:
var itemIDRe = /(?:^|[ \t\n\r\f\u200b]+)item-([^ \t\n\r\f\u200b]+)/;
$('#container').children().each(function() {
var match = itemIDRe.exec($(this).attr('class'));
var itemID = match ? match[1] : null;
// Do something with itemID.
});
正则表达式基于class
attribute和white space的HTML 4定义。