Xác định xem jQuery không tìm thấy phần tử nào


126

Tôi đang sử dụng các bộ chọn của jQuery, đặc biệt là bộ chọn id:

$("#elementId")...

Làm cách nào để xác định xem jQuery có tìm thấy phần tử này hay không? Ngay cả khi phần tử có id được chỉ định không tồn tại, câu lệnh tiếp theo sẽ cho tôi:[object Object]

alert($("#idThatDoesnotexist"));

Câu trả lời:


187

$('#idThatDoesnotexist').lengthlà những gì bạn đang tìm kiếm. (Nếu nó không tìm thấy gì, điều này sẽ=== 0 .) Vì vậy, tuyên bố điều kiện của bạn có lẽ nên là:

if ($ ('# id'). length) {/ * code nếu tìm thấy * /} khác {/ * code nếu không tìm thấy * /}

Bạn đang nhận được một đối tượng được trả về từ cảnh báo đó vì jQuery (gần như) luôn trả về "đối tượng jQuery" khi bạn sử dụng nó, đây là một trình bao bọc cho các phần tử mà jQuery tìm thấy cho phép kết nối phương thức.


3
Bạn không cần số 0, $ ('# id'). Độ dài là đủ (zero == false trong javascript)
David Hellsing

13
@David thực tế là bạn không cần nó không nhất thiết phải làm cho nó dư thừa, thoạt nhìn IMO nó làm cho nó rõ ràng hơn.
Abir

1
@ Abir: Nó chỉ làm cho nó rõ ràng hơn cho đến khi bạn quen với cú pháp mà không có nó, kiểm tra tính trung thực chứ không phải rõ ràng 0. Tôi đề nghị chỉ cần làm quen với cú pháp mà không có == 0, bạn sẽ thấy nó ở mọi nơi.
Scott Stafford

@ScottStafford, để giải phóng mặt bằng nhiều hơn, bạn cũng có thể sử dụng if (!!$('#id').length), đó là một boolean cast.
Daniele Vrut

6
Bạn cũng nên xem xét liệu lợi ích của việc lưu một vài ký tự có bù đắp được sự nhầm lẫn tiềm ẩn khi ai đó không quen thuộc với các sắc thái của Javascript đọc mã. Theo quan điểm của tôi, không phải là thực hành tốt nhất.
Matt Carr

26

Futuraprime là đúng nhưng bạn có thể rút ngắn cú pháp của mình bằng cách làm như sau:

if ($("#id").length) {
   //at least one element was found
} else {
   //no elements found
}

11
!$.isEmptyObject($.find('#id'))

Điều này sẽ trả về true nếu phần tử tồn tại và false nếu không.


7
$('#my_selector').length > 0 
$('#my_selector').get(0) !== undefined
$('#my_selector')[0] !== undefined

Đây là cơ bản, bây giờ làm bất cứ điều gì bạn muốn.

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.