Làm cách nào để có được tùy chọn đã chọn $ (this) trong jQuery?


91

Đoạn mã sau hoạt động:

$("#select-id").change(function(){
  var cur_value = $('#select-id option:selected').text();
  . . .
});

Cách cấu trúc lại dòng thứ hai thành:

var cur_value = $(this).***option-selected***.text();

Bạn dùng để làm ***option-selected***gì?

Câu trả lời:


120

Đối với giá trị đã chọn: $(this).val()

Nếu bạn cần phần tử tùy chọn đã chọn, $("option:selected", this)


101
 $(this).find('option:selected').text();

Điều này làm việc hoàn hảo cho tôi - tôi đã thử $("option:selected", this)như đã đề cập ở trên nhưng điều đó có vấn đề. Tôi đang sử dụng một lần nhấp vào nút để nối văn bản phần tử tùy chọn đã chọn vào một div khác, nhưng khi tôi nhấp vào nút, nó thực sự đã thay đổi phần tử được chọn ... kỳ lạ. Sử dụng cái này.
skwidbreth

53

Theo ý kiến ​​của tôi, cách tốt nhất và ngắn nhất cho các sự kiện onchange trên menu thả xuống để có được tùy chọn đã chọn:

$('option:selected',this);

để nhận thuộc tính giá trị:

$('option:selected',this).attr('value');

để lấy phần hiển thị giữa các thẻ:

$('option:selected',this).text();

Trong mẫu của bạn:

$("#select-id").change(function(){
  var cur_value = $('option:selected',this).text();
});

Không được sử dụng .context, nó bị phản đối kể từ jQuery 1.10 - api.jquery.com/category/deprecated/deprecated-1.10
rafx

Đúng, nhưng ý bạn là thế này: api.jquery.com/context $ ("ul", document.body) .context.nodeTên mà tôi không sử dụng
angelmedia

1
Tôi thích câu trả lời nhưng tại sao nó là tốt nhất?
Sébastien Gicquel



9

Bạn có thể sử dụng findđể tìm tùy chọn đã chọn là hậu duệ của (các) nút được đối tượng jQuery hiện tại trỏ đến:

var cur_value = $(this).find('option:selected').text();

Vì đây có thể là một đứa trẻ ngay lập tức, tôi thực sự sẽ đề xuất sử dụng .childrenthay thế:

var cur_value = $(this).children('option:selected').text();

7
var cur_value = $(this).find('option:selected').text();

optioncó khả năng là đứa con ngay lập tức của selectbạn cũng có thể sử dụng:

var cur_value = $(this).children('option:selected').text();

http://api.jquery.com/find/


Bạn nhận được option-selectedở đâu mà không có dấu ngoặc kép ...?
Platinum Azure

Đó là một lỗi đánh máy khi tôi đăng. Đã sửa câu trả lời.
thomthom

find('option:selected')trả về một chuỗi trống cho tôi. Phiên bản jQuery là bắt buộc? Tôi đang làm việc trong 1.6.1. children('option:selected')làm việc.
B Bảy

option:selectedđã có từ v1.0 api.jquery.com/selected-selector
thomthom

0

Dự đoan tôt nhât:

var cur_value = $('#select-id').children('option:selected').text();

Tôi thích trẻ em hơn trong trường hợp này vì bạn biết rằng bạn chỉ đi một nhánh xuống cây DOM ...


Có thể ý bạn thực sự là var cur_value = $ (this) .children ('option: đã chọn'). Text ();
Joe Johnston

0

Nó chỉ

$(this).val();

Tôi nghĩ jQuery đủ thông minh để biết bạn cần gì

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.