从字符串选择器获取类名,jQuery方式?

时间:2015-01-29 14:07:20

标签: jquery jquery-selectors

假设我有字符串选择器,例如:

input.js-pretty-select[type="radio"].selected

如何从此字符串中获取所有类名js-pretty-selectselected),可能使用一些jQuery核心函数?

我一开始考虑了一些正则表达式,但后来我意识到jQuery可能已经在其代码中的某个地方实现了,就像在使用$()解析选择器时那样。

3 个答案:

答案 0 :(得分:1)

这个怎么样:

$("input.js-pretty-select[type='radio'].selected").attr('class')

答案 1 :(得分:1)

JSFIDDLE DEMO => http://jsfiddle.net/s1g2mwor/

var str = 'input.js-pretty-select[type="radio"].selected';

var arr = str.split('.'); //["input", "js-pretty-select[type="radio"]", "selected"]

arr.splice(0, 1); //removing the first entry (input)

for (var i = 0; i < arr.length; i++) {
    arr[i] = arr[i].split('[')[0]; // removing [type="radio"]
};
console.log(arr); //["js-pretty-select", "selected"]

注意:此代码仅适用于您提供的字符串。如果您想要更复杂的东西,您的代码将需要处理所有复杂的场景

答案 2 :(得分:1)

您可以使用此函数使用正则表达式从字符串中提取类:

// This function accepts a string and return array of classes
function getClasses(s) {
    var matches = s.match(/\.[a-zA-Z][\w-]*/g);
    var classes = [];

    for(var i=0; i < matches.length; i++) {
      classes[i] = matches[i].substr(1);  
    }
    return classes;
}

var c = getClasses('input.js-pretty_3select[type="radio"].selected');