2016-05-14 18 views
5

là gì cách hiệu quả hơn để viết những dòng này:JQuery if() vs: chứa

if ($('.shipping .price').text() === "FREE"){ 
    $('.shipping .price').addClass('text-primary'); 
} 

HOẶC

$('.shipping .price:contains("FREE")').addClass('text-primary'); 
+8

Vâng, cả hai không tương đương, để bắt đầu. Thứ hai có thể khớp với nhiều nút hơn nút đầu tiên. – dfsq

+0

Ngay cả câu hỏi không rõ ràng ... thứ hai rõ ràng là ít dòng mã hơn và * "hiệu quả để viết" * nhưng điều đó không nhất thiết tương đương với * "hiệu quả hơn để xử lý" * – charlietfl

+1

Giả sử đây là về hiệu suất, tình hình có thể là tách tóc nhưng điều này có thể là một đọc tốt: http://stackoverflow.com/questions/111368/how-do-you-performance-test-javascript-code –

Trả lời

3

Một quick test cho thấy rằng mã với if chạy nhanh hơn khoảng 5 lần một với số contains -selector. Tuy nhiên, như những người khác đã được giải thích trong các ý kiến, hai là không tương đương.

Bạn có thể điều tốc độ lên nhiều hơn bằng cách cache cuộc gọi đến $('.shipping .price') như thế này:

var elem = $('.shipping .price'); 
if (elem.text() === "FREE"){ 
    elem.addClass('text-primary'); 
} 

Tuy nhiên, đối với hầu hết các thực tế cuộc sống khác biệt hiệu suất kịch bản sẽ không quan trọng chút nào và bạn nên đi cho các tùy chọn đó là hiệu quả hơn để đọc cho người khác. Nếu bạn thực sự quan tâm đến hiệu suất (ví dụ nếu bạn có một danh sách giá khá lớn), bạn nên sử dụng lệnh vani JS với tốc độ nhanh gấp 10 lần trong trường hợp này.