2015-12-23 21 views
6

Następujący kod podwajający szerokość i wysokość obiektów działa dobrze. Po prostu nie rozumiem, dlaczego potrzebne są nawiasy klamrowe.Dlaczego potrzebne są nawiasy klamrowe podczas używania jQuery do regulacji szerokości i wysokości?

var target = $('#target'); 
target.css({ 
    width: target.width() * 2, 
    height: target.height() * 2 
}); 
+0

nawiasy są składni JS za określenie obiekt, który podajesz do metody 'css()'. Obiekt może zawierać wiele właściwości, które powinny zostać zaktualizowane w jednym wywołaniu. –

+1

Ponieważ javascript nie ma bezpośredniej obsługi składni dla nazwanych parametrów, używa idiomu przekazywania literału obiektowego, aby osiągnąć to samo. –

Odpowiedz

-2

myślę, trzeba użyć tej

var target=$('#target'); 
target.css("width",target.width()*2); 
target.css("height",target.height()*2); 
+3

Nie, kod OP jest całkowicie w porządku. Pyta, jaki jest cel nawiasów klamrowych. –

+0

Jeśli chcesz użyć wielu atrybutów z pojedynczą linią jQuery. Musisz użyć {}. –

+4

... który już jest. –

2

nawiasach klamrowych {} są potrzebne, aby ustawić wiele CSS właściwości. Tutaj próbujesz ustawić width i height.

Wystarczy check here uzyskać więcej informacji na ten temat, a tutaj jest oficjalnym jquery api reference.

+2

Lepsze referencje: http://api.jquery.com/css. –

+0

Dodano @RoryMcCrossan .. Wielkie dzięki .. –

6

Konieczne są nawiasy klamrowe, ponieważ przekazujesz literał obiektu jako parametr do funkcji jQuery .css. Według documentation można go używać tak:

.css (właściwości)
Właściwości
Typ: PlainObject
Przedmiotem par właściwość wartości ustawić.

Tak więc width i height nie są dwoma różnymi parametrami. Są to dwie różne właściwości pojedynczego obiektu, w którym nazwa właściwości jest stylem do zmiany, a właściwość wartością do zmiany.

Mozilla ma następujący powiedzieć o literałach obiektów:

Przedmiotem dosłownym jest lista zero lub więcej par nazw właściwości i związanych z nimi wartości obiektu, umieszczone w nawiasie klamrowym ({}).

Jeśli z jakiegoś powodu chcą uniknąć za pomocą literałów obiektów, można zrobić to tak:

target.css("width", target.width()*2); 
target.css("height", target.height()*2); 

albo to:

target.width(target.width()*2); 
target.height(target.height()*2); 
Powiązane problemy