2013-03-07 13 views
5

Ho html qui sotto. Quello che voglio fare dipende da alcune condizioni. Voglio continuare a cambiare il testo che è Sometitle.Come modificare solo il testo all'interno di un div che ha altri div

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

Ho provato a utilizzare Jquery in basso ma rimuove anche gli altri div.

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

Come si ottiene? Non posso modificare questo HTML in ogni caso. Devo solo usare jquery e fare questa cosa.

Ecco un jsfiddle ho creato: http://jsfiddle.net/qYUBp/

+0

È controllo il JavaScript, ma non ha alcuna influenza sull'HTML? –

+0

non è il mio progetto, ci sto solo lavorando per un giorno ' – Yasser

+0

Possibile duplicato: http://stackoverflow.com/questions/4106809/in-jquery-how-can-i-change-an-elements-text- senza-cambiare-i-suoi-elementi-figlio –

risposta

3

Se non volete che in una sola riga.

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

jsfiddle

3

Quel testo Sometitle è un nodo orfana, si sta andando a voler avvolgere un elemento attorno ad esso per manipolare correttamente

EDIT

Ma dal momento che purtroppo non è possibile modificare l'html, è possibile fare come suggerisce la soluzione nello other post. Avevano un errore di battitura che ho corretto qui:

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

controllare il vostro updated JsFiddle

+0

Dice che non può alterare l'HTML. –

+2

Sono d'accordo, ma l'OP ha specificato che devono farlo senza modificare l'HTML. –

+0

grazie a @BradKoch, ho aggiornato –

0

provare questo

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

il titolo deve essere aggiornato di nuovo n di nuovo, quindi la sostituzione ("vecchio", "nuovo") non può funzionare nel mio caso – Yasser

+0

Questo ha il rovescio della medaglia rimuovendo tutti i gestori di eventi et al. Comunque una bella idea –

+0

Questo può essere fatto facilmente aggiungendo uno span al titolo, ma yasser vuole fare senza modificare l'html. Quindi questo è il modo in cui ho trovato. –

0

per questo caso solo, quando il rendering al browser

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

Non penso sia una buona idea che il testo "

'" and "'
' "appaia nel documento. Intendevi '.html (...)'? –

0

si può controllare questo

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

Problemi correlati