Cách thực hiện việc này bằng cách sử dụng jQuery - document.getEuityById (Danh sách chọn danh sách trực tuyến).


141

Trong jQuery, tương đương với document.getElementById("selectlist").valuecái gì?

Tôi đang cố gắng để có được giá trị của một mục danh sách chọn.

Cảm ơn.


10
Bạn có thể nhận được thông báo vì các câu hỏi của bạn có thể được trả lời chỉ sau vài giây trên Google hoặc bằng cách đọc tài liệu JQuery.
zombat

53
+1 cho amidan để can đảm người dùng SO. Câu hỏi của anh ấy là một câu hỏi hoàn toàn hợp lệ, bất kể nó dễ / khó giải quyết như thế nào. Thêm lưu lượng truy cập đến SO cho các tìm kiếm trong tương lai về chủ đề này.
Ông Smith

7
Các bạn ơi - jQuery voodoo không dễ học đối với một người già như tôi, nhà phát triển máy chủ mà tôi đã ở trong 20 năm qua - hãy trở nên dễ thương và dễ dàng với những người mới sử dụng jQuery! :-)
marc_s

1
@Boekwurm Ben - anh ấy có thể rất dũng cảm, nhưng bạn cũng không thể đổ lỗi cho người dùng SO. Mọi người thường muốn thấy một chút nỗ lực của người đặt câu hỏi.
zombat

12
Như tôi nhớ, đây là điều đầu tiên tôi không hiểu về jQuery. Tôi nghĩ đó là một câu hỏi hợp lệ nếu sự thật được nói ra, và đánh dấu xuống là khắc nghiệt. stackoverflow.com/questions/75296/ Mạnh
James Wiseman

Câu trả lời:



214

"Tương đương" là từ ở đây

Trong khi...

$('#selectlist').val();

...tương đương với...

document.getElementById("selectlist").value

...Cần lưu ý rằng...

$('#selectlist')

... mặc dù 'tương đương' không giống với ...

document.getElementById("selectlist")

... vì trước đây trả về một đối tượng jQuery, không phải đối tượng DOM.

Để lấy (các) đối tượng DOM từ jQuery, hãy sử dụng như sau:

$('#selectlist').get(); //get all DOM objects in the jQuery collection
$('#selectlist').get(0); //get the DOM object in the jQuery collection at index 0
$('#selectlist')[0]; //get the DOM objects in the jQuery collection at index 0

1
có lẽ một chút tiếp tuyến ở đây, nhưng đây sẽ là thông tin tuyệt vời: có cách nào để lấy đối tượng DOM từ jQuery không? chỉnh sửa : trả lời câu hỏi của riêng tôi trong chỉnh sửa.
Clayton Hughes

4
Tôi đập đầu vào tường trong một giờ cho đến khi tôi nhận ra rằng getEuityById () không thể được thay thế bằng $ (). Cảm ơn bạn rất nhiều vì câu trả lời này!
knite

3
@knite - Vâng. Tôi ước tôi có ai đó giải thích cho tôi lần đầu tiên tôi sử dụng jQuery.
James Wiseman

1
cảm ơn vì đã giải thích phần sau về việc lấy các đối tượng DOM trong jquery :).
kailash19

+1 Oldie nhưng là một người tốt. Tôi đã cố gắng tìm hiểu tại sao Google Maps chấp nhận một đối tượng DOM nhưng không chấp nhận đối tượng jQuery của tôi. Một tìm kiếm nhanh trên google đã đưa tôi đến đây, không phải các tài liệu jQuery.
TonyG

9

Sự hỗn loạn là tại chỗ, mặc dù đối với những loại câu hỏi này, bạn nên xem Tài liệu Jquery trực tuyến - nó thực sự khá toàn diện. Tính năng bạn theo đuổi được gọi là 'bộ chọn jquery'

Nói chung, bạn làm $('#ID').val()- sau đó có thể thực hiện một số điều trên phần tử được trả về từ bộ chọn. Bạn cũng có thể chọn tất cả các phần tử trên một lớp nhất định và làm một cái gì đó cho từng phần tử. Kiểm tra các tài liệu cho một số ví dụ tốt.


9

Nó có thể được thực hiện bằng ba cách khác nhau, mặc dù tất cả chúng đều gần giống nhau

Cách Javascript

document.getElementById('test').value

Jquery cách

$("#test").val()          

$("#test")[0].value             

$("#test").get(0).value

Đây là câu trả lời tốt nhất. Cảm ơn bạn!
Carter Medlin

2

Đối với những người thắc mắc liệu bộ chọn id của jQuery có chậm hơn document.getEuityById hay không, câu trả lời là có, nhưng không phải do định kiến ​​mà nó tìm kiếm trong toàn bộ DOM tìm kiếm một phần tử. jQuery thực sự sử dụng phương thức riêng. Đó thực sự là vì jQuery trước tiên sử dụng một biểu thức chính quy để tách các chuỗi trong bộ chọn để kiểm tra và dĩ nhiên là chạy hàm tạo:

rquickExpr = /^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/

Trong khi đó, việc sử dụng phần tử DOM làm đối số sẽ trả về ngay lập tức với 'this'.

Vậy đây:

$(document.getElementById('blah')).doSomething();

Sẽ luôn nhanh hơn thế này:

$('#blah').doSomething();

0

Trong một số trường hợp tôi không thể nhớ tại sao nhưng $('#selectlist').val()sẽ không luôn trả về giá trị mục chính xác, vì vậy tôi sử dụng $('#selectlist option:selected').val()thay thế.


Có lẽ bạn có thể gửi một số liên kết trở lại xác nhận điều này. Tôi sẽ ngạc nhiên tuy nhiên. Đây sẽ là một lỗi cơ bản trong jQuery. Có thể bạn đang sử dụng một phiên bản lỗi của thư viện?
James Wiseman

Có thể là James, tôi nghĩ rằng nó có thể là phiên bản 1.3.0, dường như không thể repro trong 1.3.2, nhưng nó cũng có thể là trong IE6 hoặc 7 mà tôi không cài đặt nữa, tôi sẽ thấy nếu tôi có thể tìm ra nguyên nhân ban đầu và báo cáo nó ở đây.
Brett Ryan
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.