JQuery获取元素's类名,以字符串“”开头;不管怎样——“;

JQuery get the rest of the element's class name that starts with string "whatever-"

本文关键字:字符串 开头 不管怎样 类名 元素 获取 JQuery      更新时间:2023-09-26

我有一个js,它缓存名称以"whatever-"开头的类,

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

但我现在想做的是得到名字的其余部分,例如,在"whatever-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));
            }       
        }    
    });

当有一个以上的类时,这也应该适用于这种情况。使用filter方法和regex 可能有更干净的方法

检查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(' '));
});

地图演示

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

演示

$('[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") ) } );