2012-02-27 43 views
13

Làm cách nào để thay đổi văn bản của một tùy chọn với jQuery?Thay đổi Văn bản của Tùy chọn bằng jQuery

Tôi muốn thay đổi Mới nhất bằng Cũ nhất trong một tùy chọn là thành phần <select>.

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

.replaceWith sẽ không hoạt động đối với tôi.

Cảm ơn.

---- Cập nhật ----

Nếu kịch bản của tôi trông như thế này:

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

Sau đó, tôi đang hủy ra kịch bản đầu tiên, tuy nhiên, đó không phải là những gì tôi muốn . Tôi có hai tùy chọn đọc "Mới nhất" mà tôi muốn thay thế bằng "Cũ nhất" và một tùy chọn đọc "Cũ nhất" mà tôi muốn thay thế bằng "Mới nhất". Làm thế nào tôi có thể thực hiện điều đó?

+0

Liệu [text()] (http://api.jquery.com/text/) không làm việc cho bạn? –

+0

Cú pháp của bạn bị hỏng. Bạn đã tìm phương thức '.changeText' ở đâu? –

+0

@amnotiam Đó là trình giữ chỗ để hiển thị những gì tôi đang cố gắng hoàn thành – henryaaron

Trả lời

33

Bạn nên bắt đầu một câu hỏi mới nhưng đây là câu trả lời:

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

Đây là một truy vấn thứ 3 không cần thiết của dom. Khi bạn tạo một đối tượng jquery, nó sẽ duy trì danh sách các phần tử mà nó khớp vào thời điểm tạo. Chỉ cần lưu các đối tượng jquery vào một biến trước khi sửa đổi. Không cần truy vấn thêm thời gian. –

+1

Tôi thích sự sáng tạo, +1 – henryaaron

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

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

http://jsfiddle.net/eSa5p/

EDIT: Câu trả lời cho câu hỏi mới:

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

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

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

+0

Cảm ơn, bạn có thể giúp tôi với câu hỏi được cập nhật không? Đã cập nhật – henryaaron

+0

câu trả lời. –

+0

Thật không may, điều này đã không làm việc cho tôi, mặc dù nó đã được ưa thích – 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

Bạn đang truy vấn DOM 4 lần khi hai lần là tất cả những gì cần thiết. Khi bạn tạo một đối tượng jquery, nó sẽ duy trì danh sách các phần tử mà nó khớp vào thời điểm tạo. Chỉ cần lưu các đối tượng jquery vào một biến trước khi sửa đổi. Không cần truy vấn thêm 2 lần và thêm và xóa các lớp không cần thiết. –

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/

Các vấn đề liên quan