2013-05-06 38 views
5

Tôi giống như hầu hết các nhà phát triển web mới làm quen trong hầu hết các trường hợp sử dụng jQuery, nhưng thường xuyên hơn tôi bắt đầu sử dụng js sạch. Vì vậy, từ đây là câu hỏi của tôi: là nó thực hành thần để sử dụng js sạch trong phạm vi jQuery, ví dụ nếu tôi cần phải có được yếu tố lớp tôi có thể làm được điều này như:Cách tốt nhất để lấy các thuộc tính phần tử là gì?

jQuery('div#grid a').click(function(event){ 
    event.preventDefault(); 
    console.log(this.getAttribute('class')); 
    console.log(this.className); 
    console.log(jQuery(this).attr('class')); 
}); 

Nhưng cách tốt nhất là gì?

+6

Xác định 'tốt nhất'. Hiệu năng-khôn ngoan, truy cập thuộc tính 'className' trực tiếp là tối ưu (không có hàm được gọi, không có đối tượng nào được tạo). – raina77ow

+2

… và trong trường hợp này, nó thậm chí còn tối ưu trong độ dài mã và khả năng đọc. Tất nhiên nó ngụ ý rằng các devs đồng nghiệp của bạn cần phải biết 'className' là gì, biểu thức chỉ jQuery là mô tả chi tiết hơn cho những người không có. – Bergi

+0

Chính xác. Tôi vẫn tự hỏi, liệu 'Element.className' có thắng với' Element.getAttribute ('class') 'trong mọi cài đặt hiện có hay không.) – raina77ow

Trả lời

3

Nó tốt hơn để sử dụng this.className bởi vì nó là nhanh nhất trong số ba. Dưới đây là một bản demo mà bạn có thể chạy và xem tốc độ thực thi: jquery attr(class) vs js.className

Bạn có thể thấy sau khi chạy thử nghiệm thuộc tính nhanh nhất là className.

3

Có, sử dụng js sạch trong phạm vi jQuery là thực hành tốt.Bởi vì đây là bản địa làm việc với DOM và nó hoạt động nhanh hơn.

Perfomance Test

+0

Nice >> !!! demo >>> – PraJen

2

Luôn có cải tiến hiệu suất bằng cách sử dụng tập lệnh gốc thay vì thực hiện cuộc gọi hàm jQuery để thực hiện tương tự.

Tuy nhiên, mức tăng này có thể không đáng kể đối với một số lượng nhỏ các thành phần. Do đó, giao dịch trở nên đơn giản hơn, mã dễ đọc hơn so với mức tăng có thể không ảnh hưởng nhiều đến giao diện người dùng

Các vấn đề liên quan