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));
            }       
        }    
    });

これは、複数のクラスがある場合にも機能するはずです。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);
});

これは、セレクターで対象とする要素に 1 つのクラスしかないことを前提としています。

于 2013-08-10T06:07:55.397 に答える
0

または、ちょっとした正規表現が好きなら、これを使用します。これは 1 行だけだからです。

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