2012-02-27 27 views
13

Jak zmienić tekst opcji za pomocą jQuery?Zmiana tekstu opcji za pomocą jQuery

Chciałbym zmienić najnowszy z najstarszym w opcji jest element <select>.

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

.replaceWith nie będzie działać dla mnie.

Dzięki.

---- Aktualizacja ----

Jeśli mój skrypt wygląda tak:

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

wtedy jestem anulowaniu pierwszego scenariusza, jednak, że nie jest to, co chcę . Mam dwie opcje, które brzmią "Najnowsze", które chciałbym zastąpić słowem "Najstarsze" i takie, które brzmią "Najstarsze", które chciałbym zastąpić słowem "Najnowsze". Jak mogę to zrobić?

+0

Does [text()] (http://api.jquery.com/text/) nie działa dla Ciebie? –

+0

Twoja składnia jest zepsuta. Gdzie znalazłeś metodę ".changeText"? –

+0

@amnotiam To był element zastępczy, aby wyświetlić to, co próbowałem osiągnąć. – henryaaron

Odpowiedz

33

należy rozpocząć nowe pytanie ale oto odpowiedź:

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

Jest to niepotrzebne trzecie zapytanie o dom. Po utworzeniu obiektu jQuery zachowuje listę elementów, które zostały dopasowane w momencie tworzenia. Po prostu zapisz obiekty jquery do zmiennej przed modyfikacją. Nie musisz pytać o dodatkowy czas. –

+1

Podoba mi się kreatywność, +1 – henryaaron

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

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

http://jsfiddle.net/eSa5p/

EDIT: Odpowiedź na nowe pytanie:

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

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

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

+0

Dzięki, czy możesz mi pomóc w zaktualizowanym pytaniu? – henryaaron

+0

odpowiedź została zaktualizowana. –

+0

Niestety, nie zadziałało to dla mnie, chociaż byłoby to preferowane – 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

Pytasz DOM 4 razy, gdy dwa razy jest wszystko, co jest potrzebne. Po utworzeniu obiektu jQuery zachowuje listę elementów, które zostały dopasowane w momencie tworzenia. Po prostu zapisz obiekty jquery do zmiennej przed modyfikacją. Nie ma potrzeby wysyłania dodatkowych zapytań 2 razy, a także niepotrzebnego dodawania i usuwania klas. –

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/

Powiązane problemy