2013-03-07 14 views
5

以下のhtmlがあります。私がしたいことは、いくつかの条件によって異なります。私はSometitleのテキストを変更し続けたいと思います。他のdivを持つdiv内のテキストのみを変更する方法

<div id="header"> 
    Sometitle 
    <div> 
     <div> 
      aa 
     </div> 
     <div> 
      bb 
     </div> 
    </div> 
</div> 

私は以下のJqueryを使用してみましたが、他のdivも削除しました。

$("#header").text("Its a thrusday today !"); 

どのようにすればいいですか?いずれにしてもこのHTMLは変更できません。私はちょうどjqueryを使用して、このことを完了させる必要があります。ここで

は、私が作成したjsfiddleです: http://jsfiddle.net/qYUBp/

+0

あなたのコントロールを確認することができますJavaScriptには影響しませんが、HTMLに影響はありませんか? –

+0

その私のプロジェクトではない、私は一日のためにそれに取り組んでいる ' – Yasser

+0

可能な重複:http://stackoverflow.com/questions/4106809/in-jquery-how-can-i-change-an-elements-text-子要素を変更せずに –

答えて

3

テキストSometitleは孤児ノードが、あなたはそれを正しく操作するために、周りの要素をラップしたいしようとしているされていること、それ

EDIT

しかし残念ながら、htmlを変更することはできませんので、解決策としてはother postのようにすることができます。彼らは私がここに訂正さタイプミスだった:

var your_div = document.getElementById('header'); 
var text_to_change = your_div.childNodes[0]; 
text_to_change.nodeValue = 'new text'; 

を使用すると、単一の行でそれをたくない場合は、この

$("#header").html($("#header").html().replace("Sometitle","Its a thrusday today !")); 
+0

彼はHTMLを変更できないと言います。 –

+2

私は同意するだろうが、OPは具体的には、HTMLを変更せずにこれを行う必要があると述べている。 –

+0

ありがとう@BradKoch、私は –

0

をご確認ください。この場合の

var tmp=$("#header>div").html(); 
$("#header").text("its thursday").append('<div>'+tmp+'</div>'); 

jsfiddle

+0

タイトルを再度更新する必要があるので、replace( "old"、 "new")は私のケースでは動作しない – Yasser

+0

これはすべてのイベントハンドラを削除します。それでもいい考えです。 –

+0

これは、タイトルにスパンを追加することで簡単に行うことができますが、yasserはhtmlを変更せずにやりたいと思います。これは私が見つけた方法です。 –

0

ブラウザ

var new_s = "Its a thrusday today !"; 
var s = $("#header").children(":first").html(); 
$("#header").text(new_s+"<div>"+s+"</div>"); 
+0

文書に「

'" and "'
」という文字が表示されているとは思いません。あなたは '.html(...)'を意味しましたか? –

0

にレンダリングする場合にのみ、あなたはこの

headerClone = $("#header").clone(); 
$(headerClone).find('div').remove(); 
var currentText = $(headerClone).html().replace(/(\r\n|\n|\r|\t)/gm,""); 

newHtml = $("#header").html().replace(currentText,"Gotcha"); 
$("#header").html(newHtml); 

JSFIDDLE

関連する問題