Trong jQuery, tương đương với document.getElementById("selectlist").value
cá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.
Trong jQuery, tương đương với document.getElementById("selectlist").value
cá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.
Câu trả lời:
"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
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.
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
Đố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();
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ế.