6

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

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

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

4

3 回答 3

7

尝试这个

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 个类的情况。通过使用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(' '));
});

地图演示

于 2013-08-10T06:04:32.570 回答
1

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

演示

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

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

于 2013-08-10T06:07:55.397 回答
0

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

$("*").filter(function(){ return /whatever-.+/.test( $(this).attr("class") ) } );
于 2013-08-10T06:55:43.377 回答