3

CRUDページがたくさんある典型的なMVC3アプリがあります。そして、これらのページにはId列のリストがたくさんあります...クライアントは今日、「Id」ではなく「ID」を常に表示したいと言っていましたが、フィールドは通常、より完全に修飾されています(IE:「JobId」またはなにか)

cssを使用して、余分なhtmlを追加せずに、テキストの「Id」部分のみを(すべて大文字に)テキスト変換する方法はありますか?

解決策の一部には、次の疑似クラスが含まれていると思います:div:contains( "Id")しかし、それが実行可能かどうかはわかりません...

また、jqueryを使用してこれを実行してもかまいませんが、リファクタリングを最小限に抑えようとしています。

4

5 に答える 5

3

ここにある他の回答に基づいて、有効な置換を含む短いバージョンがあります。

$("h3").text(function() {
    return $(this).text().replace(/\b(id)\b/gi, "ID");
});​

デモ:http: //jsfiddle.net/bcAyP/

于 2012-06-01T19:08:36.007 に答える
2

CSSを特定の単語に適用することはできず、要素(またはCSSによって定義された疑似要素の小さなセット)のみに適用できます。マークアップに影響を与えないJavaScriptベースのソリューションは次のとおりです。

デモ: http: //jsfiddle.net/6LRWC/2/

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" );​
于 2012-06-01T19:15:40.843 に答える
2

CSSスタイルを1つの単語に適用することはできず、要素にのみ適用できます。これは、追加のHTMLが必要になることを意味します。それ以外の場合は、jQueryで実行できます。

$("h3").each(function() {
    var title = $(this).text();
    title = title.replace(/\bid\b/gi, "ID");
    $(this).text(title);
});

実例

于 2012-06-01T18:52:55.327 に答える
0

内側のマッチと戦うには、次のようなものを使用します。

$("h3").each(function() {
    $(this).text($(this).text().replace(/\sId/g, "ID"));
});​

もちろん、これは、説明のようにidが常に大文字になっていることを前提としています。

于 2012-06-01T18:58:50.217 に答える
-1

http://jsfiddle.net/HZVs8/

ここに行きます。

$("body").html(function(i, t) {
return t.replace(/( id)/g, " ID");
});​

これで注意しなければならないのは、jQueryで「id」の前にスペースがあることを確認する必要があるということです。そうしないと、「id」が含まれるすべてのテキスト文字列を検索して変換します。 「ID」に。

問題が次のようなテキストである場合: "ProjectId"で、次のようにしたい場合: "ProjectID"次に、次のコードを使用します。

$("body").html(function(i, t) {
return t.replace(/(Id)/g, " ID");
});

基本的に、選択するテキストでは大文字と小文字が区別されます。正しいスニペットを選択していることを確認してください。そうしないと、「id」が含まれるすべての単語が選択されて「ID」になる可能性がありますが、それは望ましくありません。

私が作ったJSFiddleをいじりまわします。できます。

于 2012-06-01T19:08:16.170 に答える