Поскольку вы не очень точно знаете, какой класс вы хотите изменить на другой, и вы сказали, что хотите иметь дело с тем случаем, когда вы точно не знаете, что такое класс, вот некоторые идеи :
вы можете найти все объекты, которые имеют класс, который начинается с «indent_» с этим селектором:
$('[className^="indent_"]')
Если вы хотите, чтобы изучить класс по каждому из этих объектов, вы можете выполнить пошаговые jQuery с .each()
и решить, что делать с каждым объектом, или вы можете использовать removeClass() с пользовательской функцией и экзаменом ne имя класса и решить, что с ним делать.
Если вы просто хотите изменить все отступы имен классов indent_2, то вы могли бы использовать это:
$('[className^="indent_"]').removeClass("indent_1 indent_3 indent_4").addClass("indent_2");
или, используя пользовательскую функцию, которая может исследовать имя класса с регулярным выражением:
$('[className^="indent_"]').removeClass(function(index, name) {
var match = name.match(/\bindent_\d+\b/);
if (match) {
return(match[0]);
} else {
return("");
}
}).addClass("indent_2");
Или, если все, что вам нужно сделать, это найти объект с идентификатором = «TITLE_1» и исправить это имя_класса, вы можете сделать это так:
var o = document.getElementById("title_1");
o.className = o.className.replace(/\bindent_\d+\b/, "indent_2");
Вы можете увидеть эту последнюю одну работу здесь: http://jsfiddle.net/jfriend00/tF8Lw/
Если вы пытаетесь сделать это в функцию, которая может принимать различные номера, вы могли бы использовать это:
function changeIndentClass(id, indentNum) {
var item = document.getElementById(id);
item.className = item.className(/\bindent_\d+\b/, "indent_" + indentNum);
}
Что вы подразумеваете под именами, которые различаются? –
Число после «indent_» может быть 0,1,2 или 3 –
Если у вас есть два элемента на странице с тем же идентификатором, вы столкнетесь с проблемами, выбрав их по идентификатору. Некоторые браузеры вообще не работают, а другие могут возвращать только первый элемент, который соответствует. – kasdega