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

时间:2013-08-10 06:00:12

标签: javascript jquery

我有js缓存名称以“whatever - ”,

开头的类
$('[class^="whatever-"], [class*=" whatever-"]')

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

3 个答案:

答案 0 :(得分: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

可能会有更简洁的方法

Check Fiddle

使用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(' '));
});

<强> Map demo

答案 1 :(得分:1)

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

<强> DEMO

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

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

答案 2 :(得分:0)

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

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