2012-11-27 10 views
6

Vì vậy, tôi có một số hoạt Javascript/jQuery trông như thế này:Việc lưu một phần tử jQuery vào một var có làm cho phần tử được tìm lại khi sử dụng không?

var $foo = $('#bar'); 
$foo.hide(); 

Tôi đã hoạt động theo giả định rằng jQuery hoạt động trên bộ chọn nhất định, và tiết kiệm dẫn đến các phần tử DOM với var $foo ... mà, theo như tôi có thể thấy là sự thật.

Tuy nhiên, việc gọi $foo.hide() khiến jQuery tìm lại yếu tố #bar?

+0

không có không ..... –

+0

Đây được coi là thực tiễn tốt nhất. Bạn hầu như luôn luôn nên lưu một tham chiếu đến đối tượng jQuery nếu bạn định sử dụng lại. – troynt

Trả lời

8

Không, không có tham chiếu nào được thực hiện khi $ (elem) được gọi. Đây là lý do tại sao sử dụng var, để lưu trữ tham chiếu đến phần tử. Cách tốt nhất là lưu trữ các tham chiếu đến var để mã thời gian tiếp theo được sử dụng, tham chiếu cũ được sử dụng và không cần tìm kiếm lại DOM.

//reference 
var a = $('#id'); 

//use 
a.hide(); 

//same reference, use again 
a.show(); 
+0

Tuy nhiên, mã Andrew cung cấp là hợp lệ. Hàm $ trả về đối tượng jQuery chứa tham chiếu đến phần tử DOM và có thể được sử dụng ở bất kỳ điểm nào khác. Nếu bạn có 'var foo = $ (" bar "). foo.show(); 'kết quả sẽ là ** hiển thị ** . – Ash

+0

Vâng, đó là mã hợp lệ :-) –

1

Từ hiểu biết của tôi, đặt đối tượng jQuery làm var, lưu trữ đối tượng và do đó bạn không cần phải tạo lại đối tượng jQuery mỗi khi cần.

Một vài bài viết về vấn đề này, here's the first one I found off google

Tôi nghĩ tuy nhiên $('#bar') đề cập trực tiếp đến document.getElementById ('bar') như vậy, không có nhiều tòa nhà và do đó khá nhanh, nhưng nó nhanh hơn khi bạn có một mảng các đối tượng . $('.class tagType')