2011-09-14 13 views
6

Ho una funzione jquery che modifica un testo all'interno di un elemento utilizzando una funzione "testo" jquery. All'interno di questo elemento td c'è un tag "a" secondario come questo.jQuery cambia testo figlio

<td class="v3"><a href="somelink">text to change</a>

Il testo da cambiare è identificato dalla classe td. Quando cambio il testo, perdo il link. La domanda è: come cambio il testo usando l'elemento genitore senza toccare il bambino (un href)?

Thanx

risposta

9

Se si dispone di:

<td class="v3"> 
    <a href="somelink">text to change</a> 
</td> 

Poi nella funzione si dovrebbe avere qualcosa di simile:

$("td.v3").children("a").text("new text"); 

Tuttavia, questo selezionerà tutti i link che sono di retti figli di tds con classe .v3. L'aggiunta di un .first() dopo i bambini dovrebbero aiutare:

$("td.v3").children("a").first().text("new text"); 
+0

Children lavora più velocemente di $ ("td.v3 a"), perché l'ultima selezione di cui è considerato un candidato per entrare in sfrigolio - http://www.myinkblog.com/2009/09/11/sizzle -a-look-at-jquerys-new-css-selector-engine/- che richiederà alcuni ms in più;) –

2

Avvolgere il testo in un elemento span, e modificare il testo in campata.

<div id="foo"> 
    <span>bar</span> 
    <a href="#">link</a> 
</div> 

... 

$('#foo span').text('new text'); 

Edit:

Oppure utilizzare $('td.v3 a').text("new text") per modificare il testo in l'ancora, se è questo che si vuole fare.

1

Cambieresti semplicemente il testo di un altro elemento.

<td> 
    <a href="#">Link</a> 
    <span>SomeText</span> 
</td> 

quindi richiamare in questo modo:

$('td').find('span').text('myNewText'); 
0

Se si desidera modificare il testo in un menu di selezione, è possibile farlo dando un'opzione un id o classe.

 $('selector').children('option[id=option_id]').text('new text');