Javascript/jQuery:选择包含单词的类名

vla*_*lad 4 javascript variables jquery select class

我怎样才能做到这一点:

我有多个类的对象.我的目标是获取其中包含字符串(例如'toaster')的类名(或以该字符串开头)并将其放入变量中.注意我只知道类名的开头,我需要完整.

例如 <div class="writer quite-good toaster-maker"></div>

我有这个div作为我的jQuery对象,我只需要将类名toaster-maker放在变量中className;

我再次不需要选择对象!我只需要将类名放在变量中.

geo*_*org 5

正则表达式在这里似乎更有效:

classNames = div.attr("class").match(/[\w-]*toaster[\w-]*/g)
Run Code Online (Sandbox Code Playgroud)

返回所有包含“烤面包机”的类名(如果没有,则返回一个空数组)。


Fel*_*ing 3

因此,假设您已经有一个带有该div的jQuery对象,您可以获取该class属性的值,将该字符串拆分为类名,迭代它们并查看哪个包含toaster:

var className = '';
$.each($element.attr('class').split(/\s+/), function(i, name) {
    if (name.indexOf('toaster') > -1) { // or name.indexOf('toaster') === 0
        className = name;
        return false;
    }
});
Run Code Online (Sandbox Code Playgroud)

jQuery没有提供特定的功能.

如果您有多个要提取类名的元素,可以使用.map:

var classNames = $elements.map(function() {
    $.each(this.className.split(/\s+/), function(i, name) {
        if (name.indexOf('toaster') > -1) { // or name.indexOf('toaster') === 0
            return name;
        }
    });
}).get();
Run Code Online (Sandbox Code Playgroud)

classNames 然后是一个类名数组.

在支持的浏览器中.classList,您也可以使用$.each(this.classList, ...)而不是$.each(this.className.split(/\s+/), ...).