名前が「whatever-」で始まるクラスをキャッシュするjsがあります。
$('[class^="whatever-"], [class*=" whatever-"]')
しかし、今やりたいことは残りの名前を取得することです。たとえば、「whatever-9」の場合、「9」を取得したいのですが、方法がわかりません。助けてもらえますか?
名前が「whatever-」で始まるクラスをキャッシュするjsがあります。
$('[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
少しクリーナーを使用して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);
});
これは、セレクターで対象とする要素に 1 つのクラスしかないことを前提としています。
または、ちょっとした正規表現が好きなら、これを使用します。これは 1 行だけだからです。
$("*").filter(function(){ return /whatever-.+/.test( $(this).attr("class") ) } );