使用jQuery查找元素的动态类名

时间:2009-11-03 17:58:09

标签: jquery-selectors

我的元素数量不明,如此:

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

这怎么可能?

提前致谢!

2 个答案:

答案 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 attributewhite space的HTML 4定义。