2012-02-27 87 views
13

如何使用jQuery更改選項的文本?使用jQuery更改選項的文本

我想更改最舊的選項是<select>元素。

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

.replaceWith不適合我。

謝謝。

---- ----更新

如果我的劇本是這樣的:

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

然後我抵消第一個腳本,不過,這不是我想要的。我有兩個選項,一個是我想用「最舊」替換的「最新」,另一個是我想用「最新」替換爲「最舊」的一個。我怎麼能做到這一點?

+0

確實[文本()(http://api.jquery.com/text/)不是爲你工作? – 2012-02-27 01:41:23

+0

您的語法已損壞。你在哪裏找到'.changeText'方法? – 2012-02-27 01:43:46

+0

@amnotiam這是一個佔位符來顯示我想要完成的任務 – henryaaron 2012-02-27 01:44:36

回答

33

你應該開始一個新的問題,但這裏的答案:

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

這是一個不必要的dom第三個查詢。一旦你創建了一個jquery對象,它就會維護它在創建時匹配的元素列表。只需在修改之前將jquery對象保存到變量中。無需查詢額外的時間。 – 2012-02-27 20:14:41

+1

我喜歡創造力,+1 – henryaaron 2012-02-28 00:20:01

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

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

http://jsfiddle.net/eSa5p/

編輯:回答新問題:

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

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

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

+0

謝謝,你能幫助我更新的問題嗎? – henryaaron 2012-02-27 01:50:08

+0

解答已更新。 – 2012-02-27 02:34:08

+0

不幸的是,這並不適用於我,雖然它一直是首選 – henryaaron 2012-02-28 00:23:33

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

當需要兩次時,您正在查詢DOM 4次。一旦你創建了一個jquery對象,它就會維護它在創建時匹配的元素列表。只需在修改之前將jquery對象保存到變量中。不需要額外查詢2次,並且不必要地添加和刪除類。 – 2012-02-27 20:15:59

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 
    }); 
}); 

演示:http://jsfiddle.net/diode/eSa5p/2/