Nếu các <option>
phần tử của bạn không có value
thuộc tính, thì bạn chỉ có thể sử dụng .val
:
$selectElement.val("text_you're_looking_for")
Tuy nhiên, nếu các <option>
phần tử của bạn có thuộc tính giá trị hoặc có thể có trong tương lai, thì điều này sẽ không hoạt động, vì bất cứ khi nào có thể, .val
sẽ chọn một tùy chọn theo value
thuộc tính của nó thay vì theo nội dung văn bản của nó. Không có phương thức jQuery tích hợp nào sẽ chọn một tùy chọn theo nội dung văn bản của nó nếu các tùy chọn có value
thuộc tính, vì vậy chúng tôi sẽ phải tự thêm một tùy chọn bằng một plugin đơn giản:
jQuery.fn.selectOptionWithText = function selectOptionWithText(targetText) {
return this.each(function () {
var $selectElement, $options, $targetOption;
$selectElement = jQuery(this);
$options = $selectElement.find('option');
$targetOption = $options.filter(
function () {return jQuery(this).text() == targetText}
);
if ($targetOption.prop) {
$targetOption.prop('selected', true);
}
else {
$targetOption.attr('selected', 'true');
}
});
}
Chỉ cần đưa plugin này vào đâu đó sau khi bạn thêm jQuery vào trang và sau đó thực hiện
jQuery('#someSelectElement').selectOptionWithText('Some Target Text');
để chọn các tùy chọn.
Phương thức plugin chỉ sử dụng filter
để chọn ra option
targetText phù hợp và chọn nó bằng cách sử dụng .attr
hoặc .prop
, tùy thuộc vào phiên bản jQuery (xem .prop () so với .attr () để giải thích).
Đây là một JSFiddle bạn có thể sử dụng để chơi với cả ba câu trả lời được đưa ra cho câu hỏi này, điều này chứng tỏ rằng câu trả lời này là câu trả lời duy nhất hoạt động đáng tin cậy: http://jsfiddle.net/3cLm5/1/