JQuery获取元素的类名的其余部分,以字符串“whatever-”开头

我有js缓存那些名字以“whatever-”开头的类,

$('[class^="whatever-"], [class*=" whatever-"]') 

但我现在要做的就是得到名称的其余部分,例如在“what-9”的情况下,我想得到“9”,我不知道该怎么做,你能帮助我吗?

试试这个

 var check = "whatever-";        $('[class^="whatever-"], [class*=" whatever-"]').each(function () {   // Get array of class names  var cls = $(this).attr('class').split(' ');      for (var i = 0; i < cls.length; i++) { // Iterate over the class and log it if it matches if (cls[i].indexOf(check) > -1) {       console.log(cls[i].slice(check.length, cls[i].length)); }      }   }); 

这也适用于有超过1个class级的情况。 通过使用filter方法和一些regex可能有更简洁的方法

检查小提琴

使用map有点清洁

 var check = "whatever-"; $('[class^="whatever-"], [class*=" whatever-"]').each(function () { var className = this.className; var cls = $.map(this.className.split(' '), function (val, i) { if (val.indexOf(check) > -1) { return val.slice(check.length, val.length) } }); console.log(cls.join(' ')); }); 

地图演示

也许有更好的方法,但这是有效的。 检查控制台。

DEMO

 $('[class^="whatever-"], [class*=" whatever-"]').each(function () { var classname = this.className; var classsparts = classname.split('whatever-'); var result = classsparts[1] console.log(result); }); 

这假设您在选择器中定位的元素中只有一个类。

或者,如果你喜欢一个正则表达式,我会使用它,因为它只是一行。

 $("*").filter(function(){ return /whatever-.+/.test( $(this).attr("class") ) } );