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

时间:2013-08-06 08:12:52

标签: javascript jquery class variables select

我该怎么做:

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

e.g。 <div class="writer quite-good toaster-maker"></div>

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

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

3 个答案:

答案 0 :(得分:5)

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

toaster

jQuery没有提供特定的功能。

如果您有多个要提取类名的元素,可以使用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; } });

.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(); 将是一个类名数组。

在支持.classList的浏览器中,您还可以使用classNames代替$.each(this.classList, ...)

答案 1 :(得分:3)

试试这个,

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

小提琴是here。您还可以将className作为数组并将匹配的类名推送到它。

答案 2 :(得分:3)

正则表达式似乎更有效:

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

返回包含“toaster”的所有类名(如果没有,则返回空数组)。