2013-01-31 20 views
24

Czy metoda .add() pozwala wybrać wiele obiektów jednocześnie, zamiast dodawać po jednym?Zaznaczanie wielu obiektów jQuery za pomocą .add()

one.add(two).add(three).add(four).on("click", function() { }); 

Następujące zmienne są ustawione tak, jak robią, ponieważ każda z nich ma inną funkcję.

var one = $("#1"); 
var two = $("#2"); 
var three = $("#3"); 
var four = $("#4"); 

Ale co, jeśli chcę dodać dodatkową funkcję, która odnosi się do wszystkich tych elementów? Czy muszę je dodawać jeden po drugim?

Wiem, że można wybrać je wszystkie za pomocą $("#1,#2,#3,#4"), ale chcę po prostu skorzystać z powyższych zmiennych.

+2

BTW: Liczba jako pierwsza dla deklaracji ID nigdy nie jest dobrym pomysłem ... ;-) – yckart

+2

@yckart Nigdy nie są nazywane w ten sposób. Jest to wyłącznie w celach ilustracyjnych. – Antony

+1

Tak, wiem: - * – yckart

Odpowiedz

27

wolałbym takie podejście do tablicy, czysto dla czytelności ...

$([one, two, three, four]).each(function() { 
    // your function here 
}); 
4

Można umieścić je w tablicy tak

var k = [one,two,three,four] 

$.each(k,function(){ 
    $(this).click(function(){ 
    //Function here 
    }); 
}); 
+7

Lub po prostu wykonaj to: '$ (k) .click (function() {...})' –

9

Nie można dodać wiele obiektów w jednym kroku, na przykład:

var groupThree = one.add(three, five); // will not work as expected 

można buforować dodane obiekty tak, że trzeba tylko zrobić to dodać jeden raz - http://jsfiddle.net/X5432/

var one = $("#1"); 
var two = $("#2"); 
var three = $("#3"); 
var four = $("#4"); 
var five = $("#5"); 

var groupOne = one.add(two).add(three).add(four); 
var groupTwo = groupOne.add(five); 

$('#first').click(function(e){ 
    e.preventDefault(); 
    groupOne.css({'background': '#00FF00'}); 
}); 

$('#second').click(function(e){ 
    e.preventDefault(); 
    groupTwo.css({'background': '#FF0000'}); 
}); 

ale podoba mi się sposób tablica lepiej, to tylko inny sposób myślenia o nim.

+2

To jest miłe, możesz uzyskać jeszcze więcej korzyści z podejścia, używając go jak: 'groupOne.click (function (e) {}); ' – Werner

Powiązane problemy