繁体   English   中英

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

[英]Javascript / jQuery : Select class name that contains word

我怎样才能做到这一点:

我有多个类的对象。 我的目标是获取包含字符串(例如,“烤面包机”)的类名(或以该字符串开头),并将其放入变量中。请注意,我只知道类名的开始,并且需要完整。

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

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

同样,我不需要选择对象! 我只需要将类名放在变量中即可。

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

classNames = div.attr("class").match(/[\w-]*toaster[\w-]*/g)

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

因此,假设您已经有一个带该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;
    }
});

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

然后, classNames将是一个类名数组。

在支持.classList浏览器中,也可以使用$.each(this.classList, ...)代替$.each(this.className.split(/\\s+/), ...)

尝试这个,

var names = $('[class*=toaster]').attr('class').split(' ');
var className;
$.each(names, function(){
if (this.toLowerCase().indexOf("toaster") >= 0)
    className = this;
    })
console.log(className);

小提琴在这里 您也可以将className作为数组,并将匹配的类名推送到该数组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM