Làm cách nào để chọn một phần tử trong jQuery bằng cách sử dụng một biến cho ID?


100

Ví dụ: phần sau chọn phép chia có id = "2":

row = $("body").find("#2");

Làm cách nào để làm điều gì đó như sau:

row_id = 5;
row = $("body").find(row_id);

Cú pháp trên tạo ra một lỗi. Tôi đã kiểm tra tài liệu jQuery và câu trả lời ở đây mà không thành công.


6
Chà, năm câu trả lời giống hệt nhau ...
Zifre

Câu trả lời:


189
row = $("body").find('#' + row_id);

Quan trọng hơn, việc bổ sung body.find không ảnh hưởng đến hiệu suất. Cách thích hợp để làm điều này chỉ đơn giản là:

row = $('#' + row_id);

46

Con đường ngắn nhất sẽ là:

$("#" + row_id)

Hạn chế tìm kiếm đối với cơ thể không có bất kỳ lợi ích nào.

Ngoài ra, bạn nên cân nhắc đổi tên các ids của mình thành một thứ gì đó có ý nghĩa hơn (và tuân thủ HTML theo câu trả lời của Paolo), đặc biệt nếu bạn có một tập dữ liệu khác cũng cần được đặt tên.


Tôi thích ngắn gọn. Tôi vừa mới sử dụng cái này với chú giải công cụ qTip2, hoạt động tuyệt vời. Tôi hơi tò mò về hình phạt hiệu suất là gì khi tạo ra rất nhiều điều này "đúng lúc", chẳng hạn như phản hồi đầu vào của người dùng.
PJ Brunet

26

Làm $('body').find();là không cần thiết khi tra cứu bằng ID; không có hiệu suất tăng.

Cũng xin lưu ý rằng có một ID bắt đầu bằng một số không phảiHTML hợp lệ :

Mã thông báo ID và TÊN phải bắt đầu bằng một chữ cái ([A-Za-z]) và có thể được theo sau bởi bất kỳ số chữ cái, chữ số ([0-9]), dấu gạch ngang ("-"), dấu gạch dưới ("_") , dấu hai chấm (":") và dấu chấm (".").


6

Bạn có thể làm như thế này:

row_id = 5;
row = $("body").find('#'+row_id);

1

Có hai vấn đề với mã của bạn

  1. Để tìm một phần tử theo ID, bạn phải đặt trước nó bằng "#"
  2. Bạn đang cố gắng chuyển một Số cho hàm tìm khi một Chuỗi được yêu cầu (chuyển "#" + 5 sẽ khắc phục điều này vì nó sẽ chuyển 5 thành "5" trước tiên)

0

Tôi không biết nhiều về jQuery, nhưng hãy thử điều này:

row_id = "#5";
row = $("body").find(row_id);

Chỉnh sửa: Tất nhiên, nếu biến là một số, bạn phải thêm "#"vào phía trước:

row_id = 5
row = $("body").find("#"+row_id);
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.