2015-07-05 17 views
5

Natrafiłem na ten post na tej stronie z jFiddle pokazującym następujące menu dla JQuery, dobrze widziałem tę składnię, której nie potrafię zrozumieć.Co oznacza ta linia kodu JQuery?

JFiddle: http://jsbin.com/oxajeq/3/edit?html,css,js,console,output

linia kodu nie rozumiem

$('#mini-logo')[logoSH](300); 

wiem, że pierwsza część wybiera element z identyfikatorem mini-logo, ale nie mam pojęcia, co z resztą składnia jest! w kodzie [logoSH] może się pokazać lub ukryć, a() na końcu oznacza czas trwania. Jednak nie mogę znaleźć żadnego przykładu czegokolwiek używającego tej składni. Również szukałem w Google kodu CSS3, JQuery, przejść, efektów, animacji, wszystkiego, co to może być i nie ma szczęścia. Znajduję rzeczy, które są metodami, i inne, które nie są metodami, ale przyjmują parametry, ale nic takiego jak ten kod. Wiem, że to, co jest w środku [], nie jest metodą, ale nie wiem, czym one są. z góry dzięki za pomoc.

+4

Należy zauważyć, że nie jest to nic szczególnego w jQuery, to tylko standardowy dostęp do właściwości obiektów JavaScript. Nie ma związku z CSS. – nnnnnn

+0

Nadal staram się zrozumieć, w jaki sposób działa JS, więc z tym, co powiedziałeś na myśli, jest to obiekt js z właściwościami, czy jest to funkcja js/jquery? –

+0

'$ ('# mini-logo')' wywołuje funkcję '$', która zwraca obiekt. Zwrócony obiekt ma właściwości i metody, których można użyć. – nnnnnn

Odpowiedz

11

Ta konstrukcja jest oparta na bracket notation, aby uzyskać dostęp do właściwości. Pozwala tutaj na dynamiczny wybór metody do zastosowania (show lub hide).

jest albo "show" lub "hide".

Czyli linia jest albo

$('#mini-logo')["show"](300); lub $('#mini-logo')["hide"](300);

który można również odczytać jako

$('#mini-logo').show(300); lub $('#mini-logo').hide(300);

jest to wspólny konstrukt, który można również znaleźć w operator trójskładnikowy:

$('#mini-logo')[someBool ? "show" : "hide"](300); 

Uwaga: czy nie było czasu trwania, można użyć funkcji toggle, która pobiera argument binarny jako.

+0

OK, które mają sens, więc zgaduję, że .show() i .hide() są funkcjami JQuery? –

+0

@TannerSummers yes. Dodano linki w odpowiedzi. –

+0

Wygląda na to, że muszę wrócić i przejrzeć obiekty, właściwości i funkcje w JS. Jestem tak przyzwyczajony do java i C++, wydaje mi się, że to mnie myli. Jeśli dobrze pamiętam, obiekty JS mogą zawierać właściwości z wartościami lub funkcjami iz strony, którą czytałem na JS, wspomniałem o dostępie do funkcji obiektu poprzez object.function lub object ['function']. ale nigdy nie widziałem go w formacie (JS) element [funkcja] (parametry) lub (JQuery) $ ("pozycja") [funkcja] (parametry). Naprawdę doceniam pomoc, Denys, dziękuję :) –