我有你的典型MVC3应用程序,有很多CRUD页面。在这些页面中有很多带有Id列的列表......客户今天告诉我他们总是希望看到“ID”而不是“Id”,但字段通常更完全合格(IE:“Job Id”或东西)
有没有办法,用css,文本只转换文本的“Id”部分(到所有大写)而不添加任何额外的HTML?
我认为解决方案的一部分涉及这个伪类:div:contains(“Id”)但我不确定它是否可行...
我也不介意用wquery做这个,但我正在努力减少重构。
答案 0 :(得分:3)
根据其他答案,这里是有效替换的简短版本:
$("h3").text(function() {
return $(this).text().replace(/\b(id)\b/gi, "ID");
});
答案 1 :(得分:2)
您不能将CSS样式应用于单个单词,仅适用于元素。这意味着您需要拥有其他HTML。否则,它可以在jQuery中完成。
$("h3").each(function() {
var title = $(this).text();
title = title.replace(/\bid\b/gi, "ID");
$(this).text(title);
});
答案 2 :(得分:2)
您不能将CSS应用于特定单词,仅应用元素(或CSS定义的一小组伪元素)。这是一个基于JavaScript的解决方案,永远不会影响您的标记:
function replaceTextUnder(node,pattern,str){
var t, walk=document.createTreeWalker(node,NodeFilter.SHOW_TEXT,null,false);
while(t=walk.nextNode()){
t.nodeValue = t.nodeValue.replace(pattern,str);
}
}
replaceTextUnder(document.body, /\bid\b/gi, "ID" );
或者,在这里它被包装成一个jQuery插件:
jQuery.fn.replaceInText = function(pattern,str){
return this.each(function(){
var t, walk=document.createTreeWalker(this,NodeFilter.SHOW_TEXT,null,false);
while(t=walk.nextNode()) t.nodeValue = t.nodeValue.replace(pattern,str);
});
};
$('li,td,th').replaceInText( /\bid\b/gi, "ID" );
答案 3 :(得分:0)
要对抗内部比赛,请使用以下内容:
$("h3").each(function() {
$(this).text($(this).text().replace(/\sId/g, "ID"));
});
这当然假设id总是像你的描述一样大写。
答案 4 :(得分:-1)
先生,先生。
$("body").html(function(i, t) {
return t.replace(/( id)/g, " ID");
});
你需要注意的是,你必须确保“id”在jQuery中有一个空格,否则,这段代码会找到其中包含“id”的每个文本字符串将其转换为“ID”。
如果您遇到的问题是文本是这样的:“ProjectId”,您希望它像这样:“ProjectID”然后使用此代码:
$("body").html(function(i, t) {
return t.replace(/(Id)/g, " ID");
});
基本上,您选择的文字区分大小写。只需确保选择正确的代码段,或者选择带有“id”的每个单词并将其设为“ID”并且您不希望这样。
与我制作的JSFiddle混在一起。它有效。