2012-08-08 10 views
82

を使用してdivの内側のテキストだけを交換してください:は、私のようなdiv要素を持っているjqueryの

<div id="one"> 
     <div class="first"></div> 
     "Hi I am text" 
     <div class="second"></div> 
     <div class="third"></div> 
</div> 

私はjqueryのを使用して「こんにちは、私は置き換えています」に「こんにちは、私はテキストだ」からテキストのみを変更しようとしています。 これは簡単かもしれませんが、私はそれをすることができません。

$('#one').text('')を使用すると、すべて#One divが空になります。

+0

[フィドル]を作るために役に立つかもしれません、その要素を追加し、テキストを変更し、その要素を維持している(http://jsfiddle.net) – Inkbug

+0

$( '#one')を使用します。find( '。first')。テキスト( 'Hi am I am replace'); $( '#one')の代わりに。または、要素に直接アクセスして$( '。first')を使ってテキストを置き換えることができます。text( 'Hi am am replace'); –

答えて

109

テキストは、単独で使用しないでください。それをspan要素に入れてください。これに

変更を:

<div id="one"> 
     <div class="first"></div> 
     <span>"Hi I am text"</span> 
     <div class="second"></div> 
     <div class="third"></div> 
</div> 
$('#one span').text('Hi I am replace'); 
+21

これはOPの質問には答えられません。OPの質問は、HTMLを支配しているとは言いませんでした。 – tar

+0

これは動作しますが、どうすれば実行することができますか?空白やタグが変更された場合は例外を実行できますか?このdivがcode.from RESTまたはデータベース –

11

あなたは空の文字列以外にテキストを設定する必要があります。さらに、.html()関数はdivのHTML構造を保持しながらそれを行う必要があります。

$('#one').html($('#one').html().replace('text','replace')); 
+0

によって作成されたため、このバインディングが失敗したためです。この場合は動作しますが、「first」という単語を「second」という単語または「i」という単語に置き換えた場合、それはあなたのタグを台無しにするでしょう – JSON

84

テキストノード(nodeType==3)を見つけ、textContentを置き換える:

$('#one').contents().filter(function() { 
    return this.nodeType == 3 
}).each(function(){ 
    this.textContent = this.textContent.replace('Hi I am text','Hi I am replace'); 
}); 

ライブ例:http://jsfiddle.net/VgFwS/

+5

本当に素晴らしい答え! – wcolbert

+2

これは、あなたがhtmlを変更する必要はありませんので、これは受け入れられた答えになるはずです! –

+1

@Jamiec FWIWマークアップ/スクリプトなどをボルキングすることを心配することなく置換えを許可するので、この回答が大好きです。 – sehe

7

をあなたが実際にあなたがあなたを交換しようとしているテキストが

を使用することができます知っている場合
$('#one').contents(':contains("Hi I am text")')[0].nodeValue = '"Hi I am replace"'; 

http://jsfiddle.net/5rWwh/

それとも

$('#one').contents(':not(*)')[1].nodeValue = '"Hi I am replace"'; 

$('#one').contents(':not(*)')は、この場合のテキストノード内の非要素の子ノードを選択し、第2のノードは、私たちが交換したいものです。

http://jsfiddle.net/5rWwh/1/

+1

'jQuery 1.8.3'から$( '#one')。contents( ':not(*)')'は何も選択しません。 – BruceHill

0

別のアプローチは、バック

const star_icon = $(li).find('.stars svg') 
$(li).find('.stars').text(repo.stargazers_count).append(star_icon) 
関連する問題