javascript - 将某个术语的所有实例都转换为小写?

标签 javascript jquery css

我有一个导航,所有元素都通过 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/

相关文章:

javascript - 将字符串中的 URL 更改为可点击链接,同时更改其值

javascript - 如何为 slider 使用 jQuery api

javascript - 如何使用 JavaScript 和 CSS 不显眼地设置表单元素的样式?

javascript - jQuery serialize() 排除 div.classname 中的所有元素

javascript - 正则表达式使用js从html中剥离js

javascript - angularjs i18n 项目设置

javascript - 单击时变大的小图 block

javascript - 如何显示隐藏类(class)?

html - 如何用 HTML 和 JavaScript/JQuery 替换数据库以创建动态相关的下拉选择列表?

javascript - 使用 Jquery 更改 SVG 路径行为