2011-12-15 23 views
13

Đối với dự án của tôi Tôi đang sử dụng bộ chọn cache để tăng tốc độ, và thấy những cải thiện: (để giảm các tìm kiếm bên trong tài liệu)jQuery, làm thế nào để sử dụng nhiều yếu tố cache

var sel1 = $('#selector1'); 
var sel2 = $('#selector2'); 

làm thế nào tôi có thể sử dụng bộ chọn lưu trữ trong tình huống này? cho ví dụ:

$('#selector1, #selector2').fadeTo(300, 1, 'linear'); 

Đó là chỉ để đánh bóng lên mã của tôi

Ty :)

+0

Xem http://stackoverflow.com/q/1881716/901048 để biết cách tiếp cận có thể có. – Blazemonger

Trả lời

16

Bạn có thể sử dụng .add() "Thêm yếu tố để các thiết lập của các yếu tố phù hợp":

sel1.add(sel2).fadeTo(300, 1, 'linear'); 

Documents cho .add(): http://api.jquery.com/add

.210 có thể lấy tại:

  • một selector
  • phần tử DOM
  • jQuery đối tượng
  • và selectors với bối cảnh ($('<selector>', <context>))

Bạn cũng có thể vượt qua một loạt các yếu tố DOM để jQuery :

var one = $('#one')[0], 
    two = $('#two')[0]; 

$([one, two]).fadeTo(300, 1, 'linear'); 

Đây là một bản demo: http://jsfiddle.net/3xJzE/

CẬP NHẬT

Tôi tạo ra một jsperf trong ba phương pháp khác nhau mà hiện đang trả lời: http://jsperf.com/jquery-fadeto-once-vs-twice (nó có vẻ như sử dụng một selector mảng là nhanh nhất: $([one, two]).fadeTo...)

1

Nếu bạn đã có bộ chọn lưu trữ chỉ áp dụng fadeTo để mỗi một cá nhân. JQuery sẽ chỉ phải phân tích cú pháp công cụ chọn anyway ...

sel1.fadeTo(300, 1, 'linear'); 
sel2.fadeTo(300, 1, 'linear'); 
+0

fadeTo X2 vs fadeToX1 => trong sự hoàn hảo? –

+0

@ user690214: Tôi không thể hình ảnh một fadeĐể gọi trên nhiều yếu tố là có được bất kỳ tốt hơn.Nó vẫn phải làm mờ dần hai lần - một lần cho mỗi phần tử - một nơi nào đó dọc theo dòng – musefan

+1

@ user690214 Đây là một jsperf để hiển thị sự khác biệt hiệu suất giữa việc sử dụng một 'fadeTo' và sử dụng hai trong số chúng. Ngoài ra thử nghiệm đang sử dụng một mảng các phần tử DOM làm công cụ chọn: http://jsperf.com/jquery-fadeto-once-vs-twice (có vẻ như bộ chọn mảng là nhanh nhất: '$ ([sel1 [0], sel2 [0]]). FadeTo ... ') – Jasper

6

Bạn có thể sử dụng phương pháp .add() cho điều đó;

sel1.add(sel2).fadeTo(300, 1, 'linear'); 

Nó sẽ là tốt nếu bạn thêm $ tiền tố khi đặt tên biến của bạn. Bằng cách này bạn có thể phân biệt chúng với các đối tượng javascript standart. Vì vậy, đây là tốt hơn:

var $sel1 = $('#selector1'); 
var $sel2 = $('#selector2'); 

$sel1.add($sel2).fadeTo(300, 1, 'linear'); 
7

jQuery add

sel1.add(sel2).fadeTo(300, 1, 'linear'); 
1

Hãy thử điều này

sel1.add(sel2).fadeTo(300, 1, 'linear'); 
Các vấn đề liên quan