从字符串选择器中仅获取 class 个名称,jQuery 方式?

Get just class names from string selector, jQuery way?

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

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

如何从这个字符串中获取 所有 class 名称js-pretty-selectselected),可能使用一些 jQuery 核心功能?

起初我想到了一些正则表达式,但后来我意识到 jQuery 可能已经在它的代码中的某处实现了它,比如在使用 $().

解析选择器时

这个怎么样:

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

JSFIDDLE 演示 => 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"]

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

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

// 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');