問題是關於jQuery。用掩碼更改類名? (jQuery)
什麼是尋找所有類似superclass-XXXXX
,其中XXXXX
是一個數字(任何整數)在頁面上將每個這樣的類更改爲superclass-XXXXX-finished
?
例如,如果頁面上有superclass-12345
和superclass-34
類,它們將變爲superclass-12345-finished
和superclass-34-finished
。
問題是關於jQuery。用掩碼更改類名? (jQuery)
什麼是尋找所有類似superclass-XXXXX
,其中XXXXX
是一個數字(任何整數)在頁面上將每個這樣的類更改爲superclass-XXXXX-finished
?
例如,如果頁面上有superclass-12345
和superclass-34
類,它們將變爲superclass-12345-finished
和superclass-34-finished
。
此作品:
function f() {
$("[class]").each(function() {
this.className = this.className.replace(/(super-\d+)(-finished)?/, function(a, b, c) {
if (c == "") {
return a + "-finished";
}
return a;
});
});
}
f();
f();
f();
console.log($("[class]").map(function() {
return this.className;
}));
這將取代每次數的super-<some digits>
到super-<same digits>-finished
,即使你有一個單獨的元素很多這樣的課程。
輸入:
<div class="super-11"></div>
<div class="super-not-11"></div>
<div class="yes-super-111"></div>
輸出:
<div class="super-11-finished"></div>
<div class="super-not-11"></div>
<div class="yes-super-111-finished"></div>
編輯:更新以濾除其中的類一端與-finished
。
查找所有的人都開始用超是這樣的:
$('*[class^="superclass"]')
然後改變與超開始的所有類,一類新的名字:
$('*[class^="superclass"]').attr('class', 'newClass');
這將不匹配具有多個類的元素,除非'superclass-XXXXX'類是第一個在HTML中指定的類。不確定是否需要處理具有多個類的元素,但需要考慮。 –
假設你的元素有隻是一個單一的superclass-*
:
$('*[class^="superclass"]').prop('class', $(this).prop('class') + '-finished');
看起來像它的戰車。我發現的唯一問題是: 超級11成爲超級11完成(完美!),並且在相同的事件中,超級11完成。有什麼選擇來防止這件事?我相信/超 - (\ d +)/應該改變,所以它只發現一次。無論如何感謝! – Haradzieniec
對不起,我犯了一個錯字:super-11 - > super-11-finished - > super-11-finished-finished - > super-11-finished-finished-finished ... – Haradzieniec
@Haradzieniec,檢查我的編輯。 – Dogbert