Làm cách nào để lấy phần tử đầu tiên thay vì sử dụng [0] trong jQuery?


91

Tôi mới sử dụng jQuery, xin lỗi nếu đây là một câu hỏi ngớ ngẩn.

Khi tôi sử dụng nó, tìm một phần tử bằng id, tôi biết luôn có một phần tử trùng khớp và để truy cập nó, tôi sẽ sử dụng chỉ mục [0]. Có cách nào tốt hơn để làm điều này không? Ví dụ

var gridHeader = $("#grid_GridHeader")[0];

Câu trả lời:


98

Bạn cũng có thể sử dụng .get(0)nhưng ... bạn không cần phải làm điều đó với một phần tử được tìm thấy bởi ID, phần tử đó phải luôn là duy nhất. Tôi hy vọng đây chỉ là một sơ suất trong ví dụ ... nếu đây là trường hợp trên trang thực tế của bạn, bạn sẽ cần sửa nó để ID của bạn là duy nhất và sử dụng một lớp (hoặc một thuộc tính khác) để thay thế.

.get()(like [0]) lấy phần tử DOM, nếu bạn muốn sử dụng đối tượng jQuery .eq(0)hoặc .first()thay vào đó :)


17
Ngoại trừ điều đó$("#id") /* jQuery object */ != $("#id").get(0) /* DOM Object */
BrunoLM

9
@BrunoLM - Nếu bạn muốn có một phần tử DOM document.getElementById('id'), đừng tạo một đối tượng jQuery chỉ để vứt nó đi ... điều đó cực kỳ lãng phí, từ công cụ bộ chọn đến trình bao bọc đối tượng, nó chỉ là quá mức cần thiết mà không có lý do chính đáng :)
Nick Craver

Nick Tôi đồng ý, có lẽ tôi đã khá ngớ ngẩn khi chỉ sử dụng jquery cho mọi thứ.
Rubans

2
@NickCraver - Cảm ơn vì điều đó. Tôi chỉ thay thế một loạt các document.getElementById('id')bằng $('#id')[0]nhưng không thích [0]. Nhận xét của bạn về sự lãng phí khiến tôi suy nghĩ để xác định $0 = function(id){return document.getElementById(id);}và bây giờ tôi thích $0('id')hơn. Cùng số ký tự như $('#id'), tôi chỉ muốn nó có thể là$#('id')
Bruno Bronosky

2
Ước gì có một biến thể của các phương thức này trả về giá trị sai từ tập kết quả trống.
Stephen M. Harris

25

$("#grid_GridHeader:first") hoạt động tốt.


3
Tôi nghĩ đây là cách tốt nhất để xử lý vấn đề của bạn ở đây. Nó đọc tốt, như trái ngược với .eq (0)
Dave Gregory

18

Bạn có thể sử dụng phương pháp đầu tiên:

$('li').first()

http://api.jquery.com/first/

btw Tôi đồng ý với Nick Craver - sử dụng document.getElementById () ...


1
Điều này trả về một mảng trống nếu không tìm thấy phần tử nào. Hãy cẩn thận khi sử dụng trong các câu lệnh logic như []sẽ đánh giá true.
Ashley

4

Với giả định rằng chỉ có một phần tử:

 $("#grid_GridHeader")[0]
 $("#grid_GridHeader").get(0)
 $("#grid_GridHeader").get()

... đều tương đương, trả về phần tử cơ bản duy nhất.

Từ mã nguồn jQuery, bạn có thể thấy rằng get(0), về cơ bản, về cơ bản thực hiện điều tương tự như [0]cách tiếp cận:

 // Return just the object
 ( num < 0 ? this.slice(num)[ 0 ] : this[ num ] );

Cảm ơn vì mọi thứ khác hoạt động ngoài get () mà dường như không có được mục đầu tiên.
Rubans

Trên thực tế, tôi có thể thấy từ câu trả lời của Nick Crave tại sao điều đó không hiệu quả
Rubans


3

Bạn có thể sử dụng bộ chọn đầu tiên.

var header = $('.header:first')

Trả về một mảng có một phần tử.
Nitin

-3

Bạn có thể thử như thế này:
yourArray.shift()

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.