2012-02-27 18 views
13

Come posso modificare il testo di un'opzione con jQuery?Modificare il testo di un'opzione con jQuery

Mi piacerebbe modificare Più recente con Più vecchio in un'opzione è un elemento <select>.

$('select option:contains("Newest")').changeText('Oldest'); 

.replaceWith non avrebbe funzionato per me.

Grazie.

---- ---- Aggiornamento

Se il mio script è simile al seguente:

$('select option:contains("Newest")').text('Oldest'); 
$('select option:contains("Oldest")').text('Newest'); 

Poi sto annullando il primo script, tuttavia, che non è quello che voglio . Ho due opzioni una che legge "Più recenti" che vorrei sostituire con "Più vecchio" e uno che legge "Più vecchio" che vorrei sostituire con "Più recente". Come posso farlo?

+0

fa [text()] (http://api.jquery.com/text/) non funziona per voi? –

+0

La sintassi è errata. Dove hai trovato il metodo '.changeText'? –

+0

@amnotiam Era un segnaposto per visualizzare ciò che stavo cercando di realizzare – henryaaron

risposta

33

si dovrebbe iniziare una nuova domanda, ma ecco la risposta:

$('select option:contains("Newest")').text('TEMPEST'); 
$('select option:contains("Oldest")').text('Newest'); 
$('select option:contains("TEMPEST")').text('Oldest'); 
+1

Questa è una terza query non necessaria del dom. Una volta creato un oggetto jquery, mantiene l'elenco degli elementi che ha abbinato al momento della creazione. Basta salvare gli oggetti jquery su una variabile prima di modificarli. Non c'è bisogno di interrogare un tempo extra. –

+1

Mi piace la creatività, +1 – henryaaron

2
$('select option:contains("Newest")').each(function(){ 
    var $this = $(this); 

    $this.text($this.text().replace("Newest","Oldest"));  
});​ 

http://jsfiddle.net/eSa5p/

EDIT: risposta alla nuova domanda:

var $newest = $('select option:contains("Newest")'); 

$('select option:contains("Oldest")').text('Newest'); 
$newest.text('Oldest'); 

http://jsfiddle.net/eSa5p/3/

+0

Grazie, puoi aiutarmi con la domanda aggiornata? – henryaaron

+0

risposta aggiornata. –

+0

Sfortunatamente, questo non ha funzionato per me, anche se sarebbe stato preferibile – henryaaron

0
$('select option:contains("Newest")').addClass('changeToOldest'); 
$('select option:contains("Oldest")').addClass('changeToNewest'); 
$('.changeToOldest').text('Oldest').removeClass('changeToOldest'); 
$('.changeToNewest').text('Newest').removeClass('changeToNewest'); 
+0

Stai interrogando il DOM 4 volte quando il doppio è tutto ciò che è necessario. Una volta creato un oggetto jquery, mantiene l'elenco degli elementi che ha abbinato al momento della creazione. Basta salvare gli oggetti jquery su una variabile prima di modificarli. Non è necessario interrogare un extra 2 volte e aggiungere e rimuovere classi inutilmente. –

2
$("#mySelect option").html(function(i,str){ 
    return str.replace(/Newest|Oldest/g, // here give words to replace 
    function(m,n){ 
     return (m == "Newest")?"Oldest":"Newest"; // here give replacement words 
    }); 
}); 

demo: http://jsfiddle.net/diode/eSa5p/2/

Problemi correlati