jQuery:制作具有不同大小写标题大小写的字符串

标签 jquery css string

很简单的问题,但我似乎找不到答案。

我有几个来自不同来源的 HTML 页面,它们的 <h2> 中有字符串大写字母的元素。如:

<h2>Are there OTHER USES for this medicine?</h2>

我希望将这些常规句子大小写,即,

<h2>Are there other uses for this medicine?</h2>

我首先使用 CSS 将它们全部设为小写:

h2 {
  text-transform: lowercase;
}

因为我希望通过制作一个仅将第一个字母大写的函数来使用 jQuery 来操作它们。

所以问题是:我将如何编写一个 jQuery 函数来将每个 h2 的第一个字母大写?页面上的元素?

看完this thread ,试过这个:

function capitaliseFirstLetter(string){
  return string.charAt(0).toUpperCase() + string.slice(1);
}

$('h2').each(function(){
  capitaliseFirstLetter($(this).text());
});

但是没用,控制台也没有报错,不知道怎么回事。

编辑

我在这个问题上犯了一个很大的疏忽。使用

text-transform: lowercase

把我变成小写,所以

<h2>What should I do in case of OVERDOSE?</h2>

成为

<h2>What should i do in case of overdose?</h2>

当我使用@marcelo-biffara 的解决方案时。 (或 :first-letter CSS 语法。)

现在,我是否需要使用复杂的正则表达式来将字符串“i ”大写?

编辑 2

如果“i ”出现两次(例如“如果我服用太多剂量我该怎么办?”),我是否需要一个循环来将它们替换为“I ”?

最佳答案

你可以实现这个功能

function capitalizeMe(val){
    return val.charAt(0).toUpperCase()+val.substr(1).toLowerCase();
}

哦,也许你需要删除你的 css h2 规则

你可以像这样将它应用到你的 h2

$('h2').each(function(){
    var str = capitalizeMe($(this).html());
    $(this).html(str);  
});


function replaceAll( text, v1, v2 ){
  while (text.toString().indexOf(v1) != -1)
      text = text.toString().replace(v1,v2);
  return text;
}

如果你想将“i”的每个实例都大写,你可以这样做

$('h2').each(function(){
    var str = replaceAll(capitalizeMe($(this).html())," i "," I ");
    $(this).html(str);  
});

关于jQuery:制作具有不同大小写标题大小写的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13750910/

相关文章:

html - 页脚后有很多空白

Javascript正则表达式替换-出现随机数字

C# - 如何通过忽略末尾的特殊字符来使用最后一个字符对字符串列表进行排序

css - react : state-based styling

javascript - Bootstrap 3.3.7 hidden-lg-up 不工作

c++ - 检查字符串中每个字符串有多少个(简化)

javascript - jQuery UI 对话框按钮没有所有默认类?

javascript - 如何从 jquery 对话框中返回 true 消息

jquery - 我在我的文本输入中添加了一个类,但它没有呈现

javascript - 使用 parsley.js 2.x 自定义错误显示