Tôi đã làm việc trên một ứng dụng, giao diện người dùng chủ yếu sử dụng jQuery.Sự khác nhau giữa việc sử dụng thuộc tính dữ liệu và lớp/ID cho hành vi javascript là gì?
Chúng tôi dựa vào một số yếu tố được phân loại có mặt trên trang để chúng tôi có thể đính kèm hành vi cho họ. Ví dụ:
$('.block').on('click', clickHandler);
Một trong những nhà phát triển khác cho biết chúng tôi phải tách rời bản trình bày khỏi logic (mà tôi đồng ý). Bởi vì các lớp học được sử dụng để trình bày, ông đề nghị sử dụng các thuộc tính dữ liệu:
$('[data-attribute-name~=value]').on('click', clickHandler);
Tuy nhiên, tôi biết như sau về phương pháp này:
- Nó là đáng kể ít performant hơn một chọn dựa trên lớp
- Các lớp HTML được sử dụng để truyền đạt ý nghĩa ngữ nghĩa đến một phần tử DOM, và, như vậy, không bị giới hạn trong các sử dụng hiện tại.
Tôi không thấy bất kỳ đề cập cụ thể nào khi đọc lên trên unobtrusive javascript.
Sự khác biệt chính khi sử dụng [data-attribute]
qua lớp học/ID là gì?
Đó có phải là vấn đề về hiệu suất/sở thích không?
ID cũng có thể được sử dụng để truyền đạt ý nghĩa ngữ nghĩa cho phần tử DOM. – Terry
ID duy nhất luôn là cách nhanh nhất để định vị một phần tử, theo sau (như tôi hiểu) bằng cách chọn thẻ, chọn lớp và chọn thuộc tính tùy ý. Trong thực tế, người dùng sẽ hiếm khi nhận thấy bất kỳ sự khác biệt nào trừ khi trang đặc biệt lớn. – Blazemonger
Sự khác biệt lớn duy nhất sẽ là hiệu suất khi lựa chọn bởi chỉ lớp vs thuộc tính dữ liệu, mặc dù điều đó sẽ không ảnh hưởng đến các trình duyệt hiện đại, đủ để quan trọng. –