2011-02-08 66 views
0

我想找到包含文本iconGroup类名的精确值,我能够用得到的类名称的数组:的jQuery发现的类名值

var chosenIconClassArray = $('.selectedGroupIcon').attr('class').split(/\s+/); 
console.log(chosenIconClassArray); 
$.each(chosenIconClassArray, function(index, item) { 
    console.log(item); 
}); 

这给出了一个控制台输出:

["createAGroupIconList", "inlinelist", "ram", "left", "iconGroup20", "selectedGroupIcon"] 

createAGroupIconList 
inlinelist 
ram 
left 
iconGroup20 
selectedGroupIcon 

我试图沿着这一线的东西找到它是iconGroup,但没有奏效:

if (item ^= 'iconGroup') { 
    console.log($(this)); 
} 

目标是能够告诉类数组包含值iconGroup20(或任何数字,如1,2,3,4等),然后我可以将其添加到另一个元素来更新它的图标。

我该如何去搜索这个数组然后找到哪个类是它的呢?

回答

2

您是否在寻找与“iconGroup ##”格式匹配的产品上的类?如果是这样,尝试这样的事情:

function getIconGroup(class_array) { 
    var iconGroup = false; 
    $.each(class_array, function(index, item) { 
    if item.match(/^iconGroup[0-9]+$/) { 
     iconGroup = item; 
    } 
    }); 
    return iconGroup; 
} 

更新作为一个功能,因此您可以使用getIconGroup(ChosenIconClassArray)

+0

感谢Corey,当类数组包含`each`循环中的`iconGroup ##`之后的类时,如何防止该项被`null`覆盖? – iwasrobbed 2011-02-08 21:41:25

1

JavaScript有一个String.indexOf方法。它会返回您给它的字符串的索引,如果没有找到该字符串,则返回-1。

下面这段代码应该给你你希望的类。

var chosenIconClassArray = $('.selectedGroupIcon').attr('class').split(/\s+/), 
    foundClass; 
$.each(chosenIconClassArray, function(index, item) { 
    if (item.indexOf('iconGroup') > -1) { 
     foundClass = item; 
    } 
}); 

变量foundClass应该包含完整的类。

+0

感谢詹姆斯,我试过`indexOf`,但不确定它是否会跨浏览器。此外,这个函数(有)非法break语句,所以它不会工作。 – iwasrobbed 2011-02-08 21:42:51