У меня есть навигация со всеми элементами, заглавными с помощью text-transform:uppercase
. Тем не менее, существует один термин (ISAtv), который я всегда хочу использовать с более низким уровнем. Этот термин появляется много раз во время навигации (подменю и т.д.), Поэтому вместо того, чтобы просто нацеливать этот элемент на CSS, мне было интересно, есть ли способ, которым я могу использовать какой-то код для одновременного изменения всех них.
Так, например, это выглядело бы примерно так:
ABOUT PAGE1 PAGE2 PAGE3 WATCH ISAtv CONTACT
Я хотел бы преобразовать все экземпляры "ISATV" в "ISAtv". Как я могу это сделать?
Принятый ответ все еще не решает проблему правильно. Здесь быстрая и грязная функция, которую я написал, которую вы можете использовать, которая находит все экземпляры строки и сохраняет ее регистр.
JS:
function retainCaseStrings(retainWord, caseInsensitive) {
$('body *').contents().each(function() {
if (this.nodeType === 3 && $.trim(this.data).length) {
var trimmedWord = $.trim(this.data);
var indexOfRetainedWord;
if (caseInsensitive) {
var lowerCaseRetainWord = retainWord.toLowerCase();
indexOfRetainedWord = trimmedWord.toLowerCase().indexOf(lowerCaseRetainWord);
} else {
indexOfRetainedWord = trimmedWord.indexOf(retainWord);
}
if (indexOfRetainedWord !== -1) {
var $span = $(document.createElement('span')).addClass('retain-case').append(trimmedWord.slice(indexOfRetainedWord, retainWord.length));
var requiredNodes = [
document.createTextNode(trimmedWord.slice(0, indexOfRetainedWord)),
$span[0],
document.createTextNode(trimmedWord.slice(indexOfRetainedWord + retainWord.length))
];
var parentNode = this.parentNode;
parentNode.replaceChild(requiredNodes[2], this);
parentNode.insertBefore(requiredNodes[1], requiredNodes[2]);
parentNode.insertBefore(requiredNodes[0], requiredNodes[1]);
}
}
});
}
var retainWord = 'ISAtv';
retainCaseStrings(retainWord, true);
CSS:
.retain-case { text-transform: none; }
Вы можете заменить текст ISATV правильным текстом, а также инкапсулировать его в span
с классом, чтобы удалить text-transform
.
JS:
var strIsatv = /(ISATV)+/gi;
document.body.innerHTML = document.body.innerHTML.replace(strIsatv, '<span class="untransform">ISAtv</span>');
CSS:
.untransform { text-transform: none; }