我有一个导航,所有元素都通过 text-transform:uppercase
大写。但是,有一个术语 (ISAtv) 我总是希望小写。这个术语在整个导航(子菜单等)中多次出现,所以我想知道是否有一种方法可以使用一些代码来一次更改所有元素,而不是仅通过 CSS 定位一个元素。
例如,它看起来像这样:
关于 PAGE1 PAGE2 PAGE3 观看 ISAtv 联系方式
我想将“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; }
关于javascript - 将某个术语的所有实例都转换为小写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23377847/