jQuery:使用大小写不同的标题大小写生成字符串

jQuery:使用大小写不同的标题大小写生成字符串,jquery,css,string,Jquery,Css,String,这个问题很简单,但我似乎找不到答案 我有几个来自不同来源的HTML页面,它们的元素中有字符串,并使用哑大写。例如: 这种药还有其他用途吗? 我想把这些常规的句子做成格,即 这种药还有其他用途吗? 我首先用CSS将它们全部小写: h2 { text-transform: lowercase; } 因为我希望通过jQuery生成一个只大写第一个字母的函数来操纵它们 所以问题是:我如何编写jQuery函数来将页面上每个h2元素的第一个字母大写 阅读后,尝试以下方法: function capit

这个问题很简单,但我似乎找不到答案

我有几个来自不同来源的HTML页面,它们的
元素中有字符串,并使用哑大写。例如:

这种药还有其他用途吗?

我想把这些常规的句子做成格,即

这种药还有其他用途吗?

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

h2 {
  text-transform: lowercase;
}
因为我希望通过jQuery生成一个只大写第一个字母的函数来操纵它们

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

阅读后,尝试以下方法:

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

$('h2').each(function(){
  capitaliseFirstLetter($(this).text());
});
但是它不起作用,而且控制台也没有给我任何错误,所以我不知道出了什么问题

编辑

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

文本转换:小写

我把单词改成小写,所以

如果服用过量,我该怎么办?

变成

如果服用过量,我该怎么办?

当我使用@marcelo biffara的解决方案时。(或
:第一个字母
CSS语法。)

现在,我是否需要使用复杂的regexp来将字符串“I”大写

编辑2


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

您需要保存h2含量的新值:

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

capitaliefirstletter($(this.text())返回一个字符串。就这样。你不能用那根绳子做任何事。您需要将返回的字符串放在某个位置

$('h2').each(function(){
    var str = capitaliseFirstLetter($(this).text());
    $(this).text(str);  // Set the text of the element
});

你就不能用CSS吗

h2 {
    text-transform: lowercase;
}
h2:first-letter {
    text-transform: capitalize;
}

您可以使用此功能

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;
}
$('h2').each(function(){
    var str = replaceAll(capitalizeMe($(this).html())," i "," I ");
    $(this).html(str);  
});
如果你想大写“i”的每个实例,你可以这样做

$('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;
}
$('h2').each(function(){
    var str = replaceAll(capitalizeMe($(this).html())," i "," I ");
    $(this).html(str);  
});

你不能做任何事情,你只需添加以下css

 h2{
       text-transform: lowercase;
    }
h2{
文本转换:小写;
}

我的名字是xYz
忘了提到我需要支持IE8,它不支持伪选择器。但这是个好主意@从DOC上面的NICCOXDOTME,它支持IE5.5,但是我想如果要使用<代码>:第一个字母< /代码>,我没有很多要考虑的,哦,我没有看到用一个冒号语法工作。这是一个很好的解决方案,请看我的编辑。这很好,但它只适用于一个句子中有一个“i”的实例。如果像“如果我忘记服用一剂,我该怎么办?”这样的内容,是否需要一个循环?将其添加到编辑中,我会将其标记为正确。好的,现在再试一次,您必须编写一个自定义的replaceAll函数,如图所示!如果字符串以“i”开头且尚未大写,则此解决方案将失败。尽管如此,这适用于OP所述的情况。