以下代码查看具有“title-case”类的任何元素,并将每个单词的第一个字母修改为稍大,如果它是大写字母。这是代码:
$(document).ready(function(){
$('.title-case').each(function(){
$(this).html( capitalize_first_letter( $(this).html() ) );
});
});
function capitalize_first_letter( str ) {
var words = str.split(' ');
var html = '';
$.each(words, function() {
var first_letter = this.substring(0,1);
html += ( first_letter == first_letter.toUpperCase() ? '<span class="first-letter">'+first_letter+'</span>' : first_letter )+this.substring(1) + ' ';
});
return html;
}
你可以在这里看到它运行:http: //jsfiddle.net/82Ebt/
它在大多数情况下都有效,但正如您从示例中看到的那样,它会破坏内部 HTML 节点。我实际上不知道如何解决这个问题并且可以使用一些想法。我想也许只是操纵 .text() 而不是 .html() 但这会彻底去除 HTML。
编辑:我想指出我使用 javascript 的原因是因为我希望字符串中的每个单词的第一个字母更大,如果它是大写的。:first-letter 伪类只影响第一个单词。
谢谢 :)