見つかったノードごとに反復処理を行い、クラスを反復して一致するものを見つけることができます。見つかった場合は、クラスを削除し、それをログに記録:
var found = [];
$('div[class*="some-class-"]').each(function() {
var classes = this.className.split(/\s+/),
$this = $(this);
$.each(classes, function(i, name) {
if (name.indexOf('some-class-') === 0) {
$this.removeClass(name);
found.push(name);
}
});
});
注意をdiv[class*="some-class-"]
のようなセレクタはかなり高価であることを、あなたはとにかく余分な処理を実行する必要があるため、それだけですべてのdiv
タグを反復処理し、それらを処理するために容易になるだろう:
var elements = document.getElementsByTagName('div'),
found = [];
$.each(elements, function(i, element) {
var classes = element.className.split(/\s+/);
$.each(classes, function(i, name) {
if (name.indexOf('some-class-') === 0) {
$(element).removeClass(name);
found.push(name);
}
});
});
最近のブラウザは、反復のためにあなたがクラス名を操作するために使用することができますElement.classList
とArray.forEach
を公開:
var found = [];
[].forEach.call(document.getElementsByTagName('div'), function(element) {
(function(names, i) {
while (i < names.length) {
var name = names[i];
if (name.indexOf('some-class-') === 0) {
names.remove(name);
found.push(name);
} else {
++i;
}
}
}(element.classList, 0));
});
回答を参照してください:[jQueryで要素のクラスリストを取得する](http://stackoverflow.com/questions/1227286/get-class-list-for-element-with-jquery) – Trylks
@Trylks素晴らしい!それは実際には私の問題をより良い方法で解決します!ありがとう! (しかし、それはこの名前を抽出する長い道のりです) – Atadj