Składnia
- Skrót do gotowego wydarzenia przez roosteronacid
- Przerwanie linii i łańcuchowość przez roosteronacid
- Zagnieżdżanie filtrów według Nathana Longa
- Buforuj kolekcję i wykonuj polecenia w tym samym wierszu przez roosteronacid
- Zawiera selektor według roosteronacid
- Definiowanie właściwości przy tworzeniu pierwiastka przez roosteronacid
- Uzyskuj dostęp do funkcji jQuery jak do tablicy przez roosteronacid
- Funkcja noConflict - Uwolnienie zmiennej $ przez Oli
- Wyodrębnij zmienną $ w trybie noConflict przez nickf
- Tryb bez konfliktu przez roosteronacid
Przechowywanie danych
- Funkcja danych - powiązanie danych z elementami przez TenebrousX
- Obsługa atrybutów danych HTML5 na sterydach! przez roosteronacid
- Wtyczka metadanych jQuery autorstwa Filipa Dupanovicia
Optymalizacja
- Zoptymalizuj działanie złożonych selektorów według roosteronacid
- Parametr kontekstu autorstwa lupefiasco
- Zapisuj i wykorzystuj ponownie wyszukiwania Nathana Longa
- Tworzenie elementu HTML i utrzymywanie odwołania, Sprawdzanie, czy element istnieje, Pisanie własnych selektorów przez Andreasa Grecha
Różne
- Sprawdź indeks elementu w kolekcji przez redsquare
- Obsługa zdarzeń na żywo przez TM
- Zastąp anonimowe funkcje nazwanymi funkcjami przez ken
- Struktura Microsoft AJAX i most jQuery firmy Slace
- Samouczki jQuery autorstwa egyamado
- Usuń elementy z kolekcji i zachowaj łańcuchowość dzięki roosteronacidowi
- Zadeklaruj to na początku anonimowych funkcji Bena
- FireBug Lite, wtyczka Hotbox, informuje, kiedy obraz został załadowany i Google CDN przez Color Blend
- Rozsądne wykorzystanie skryptów jQuery innych firm przez harriyott
- Każda funkcja Jana Zicha
- Wtyczka Form Extensions autorstwa Chrisa S.
- Asynchroniczna każda funkcja przez OneNerd
- Wtyczka szablonu jQuery: implementacja złożonej logiki przy użyciu funkcji renderowania przez roosteronacid
javascript
jquery
kwas roosteronowy
źródło
źródło
if ((var someDiv = $("#someDiv")).length) { /* do stuff with someDiv... */ }
someDiv
wif
instrukcji, ponieważ tak nie jest; JavaScript obsługuje tylko zakres funkcjidata()
Metoda jQuery jest przydatna i mało znana. Umożliwia powiązanie danych z elementami DOM bez modyfikowania DOM.źródło
Zagnieżdżanie filtrów
Możesz zagnieżdżać filtry (jak pokazał tutaj nick ).
źródło
Naprawdę nie jestem fanem tego
$(document).ready(fn)
skrótu. Jasne, że ogranicza kod, ale także zmniejsza czytelność kodu. Kiedy widzisz$(document).ready(...)
, wiesz, na co patrzysz.$(...)
jest używany na zbyt wiele innych sposobów, aby natychmiast mieć sens.Jeśli masz wiele ram, możesz użyć,
jQuery.noConflict();
jak mówisz, ale możesz też przypisać do niej inną zmienną:Bardzo przydatne, jeśli masz kilka ram, które można sprowadzić do
$x(...)
wywołań w stylu.źródło
Ooooch, nie zapomnijmy o metadanych jQuery ! Funkcja data () jest świetna, ale należy ją wypełnić za pomocą wywołań jQuery.
Zamiast łamać zgodność W3C z niestandardowymi atrybutami elementu, takimi jak:
Zamiast tego użyj metadanych:
źródło
data-*
atrybuty są automatycznie dostępne poprzez wywołania do.data()
Obsługa zdarzeń na żywo
Ustaw moduł obsługi zdarzeń dla dowolnego elementu, który pasuje do selektora, nawet jeśli zostanie dodany do DOM po początkowym załadowaniu strony:
Umożliwia to ładowanie treści za pośrednictwem ajax lub dodawanie ich za pomocą javascript i automatyczne ustawianie programów obsługi zdarzeń dla tych elementów.
Podobnie, aby zatrzymać obsługę wydarzenia na żywo:
Te programy obsługi zdarzeń na żywo mają kilka ograniczeń w porównaniu ze zwykłymi wydarzeniami, ale działają świetnie w większości przypadków.
Aby uzyskać więcej informacji, zobacz dokumentację jQuery .
AKTUALIZACJA:
live()
idie()
są przestarzałe w jQuery 1.7. Zobacz podobne funkcje zastępowania na http://api.jquery.com/on/ i http://api.jquery.com/off/ .AKTUALIZACJA 2:
live()
dawno przestarzała, nawet przed wersją jQuery 1.7. Dla wersji jQuery 1.4.2+ przed wersją 1.7delegate()
iundelegate()
.live()
Przykład ($('button.someClass').live('click', someFunction);
) może być zapisane wdelegate()
tak:$(document).delegate('button.someClass', 'click', someFunction);
.źródło
Zastąp funkcje anonimowe nazwanymi funkcjami. To naprawdę zastępuje kontekst jQuery, ale wchodzi w grę bardziej, jak się wydaje podczas korzystania z jQuery, ze względu na jego zależność od funkcji zwrotnych. Problemy, które mam z wbudowanymi funkcjami anonimowymi, polegają na tym, że trudniej jest je debugować (o wiele łatwiej jest spojrzeć na stos wywołań z wyraźnie nazwanymi funkcjami, zamiast 6 poziomów „anonimowych”), a także fakt, że wiele anonimowych funkcji w tym samym Łańcuch jQuery może stać się niewygodny w czytaniu i / lub utrzymywaniu. Ponadto funkcje anonimowe zwykle nie są ponownie wykorzystywane; z drugiej strony, zadeklarowanie nazwanych funkcji zachęca mnie do napisania kodu, który prawdopodobnie będzie ponownie użyty.
Ilustracja; zamiast:
Wolę:
źródło
this
, nie można uzyskać „właściwego” OO bez użycia obudów. Zazwyczaj wybieram kompromis:$('div').click( function(e) { return self.onClick(e) } );
Definiowanie właściwości przy tworzeniu elementu
W jQuery 1.4 możesz użyć literału obiektu do zdefiniowania właściwości podczas tworzenia elementu:
... Możesz nawet dodawać style:
Oto link do dokumentacji .
źródło
zamiast używać innego aliasu dla obiektu jQuery (przy użyciu noConflict), zawsze piszę mój kod jQuery, pakując go w zamknięcie. Można to zrobić za pomocą funkcji document.ready:
alternatywnie możesz to zrobić w następujący sposób:
Uważam to za najbardziej przenośne. Pracowałem nad witryną, która jednocześnie używa Prototypu ORAZ jQuery, a techniki te pozwoliły uniknąć wszystkich konfliktów.
źródło
instanceOf
nie zadziała, tylkoinstanceof
. I tak nie zadziała, bojQuery instanceof jQuery
wrócifalse
.$ == jQuery
to właściwy sposób, aby to zrobić.Sprawdź indeks
jQuery ma .index, ale korzystanie z niego jest kłopotliwe, ponieważ potrzebujesz listy elementów i przekazujesz element, który chcesz indeksować:
Następujące jest znacznie łatwiejsze:
Jeśli chcesz poznać indeks elementu w zestawie (np. Elementy listy) w liście nieuporządkowanej:
źródło
index()
i pobrać indeks od jego rodzica.Stenografia do imprezy gotowej
Bezpośredni i pełny sposób:
Stenografia:
źródło
W podstawowej funkcji jQuery oprócz parametru selektora określ parametr kontekstu. Określenie parametru kontekstu umożliwia uruchamianie jQuery z głębszej gałęzi w DOM, a nie z katalogu głównego DOM. Biorąc pod uwagę wystarczająco duży DOM, określenie parametru kontekstu powinno przełożyć się na wzrost wydajności.
Przykład: Znajduje wszystkie dane wejściowe typu radia w pierwszym formularzu w dokumencie.
Odniesienie: http://docs.jquery.com/Core/jQuery#expressioncontext
źródło
$(document.forms[0]).find('input:radio')
robi to samo. Jeśli spojrzysz na źródło jQuery, zobaczysz: jeśli przekażesz drugi parametr$
, tak naprawdę zadzwoni.find()
.$('form:first input:radio')
?Nie tylko jQuery, ale zrobiłem ładny mostek dla jQuery i MS AJAX:
To naprawdę miłe, jeśli robisz dużo ASP.NET AJAX, ponieważ jQuery jest obsługiwany przez MS, a teraz ma ładny mostek, co oznacza, że bardzo łatwo jest wykonywać operacje jQuery:
Tak więc powyższy przykład nie jest świetny, ale jeśli piszesz kontrolki serwera AJAX ASP.NET, łatwo jest mieć jQuery wewnątrz implementacji kontroli po stronie klienta.
źródło
Zoptymalizuj wydajność złożonych selektorów
Zapytanie o podzbiór DOM przy użyciu złożonych selektorów drastycznie poprawia wydajność:
źródło
Mówiąc o poradach i poradach, a także niektórych samouczkach. Znalazłem te serię samouczków ( „jQuery dla początkujących” seria video) przez Jeffery Drogi są bardzo pomocne.
Jest skierowany do programistów, którzy są nowi w jQuery. Pokazuje, jak tworzyć wiele fajnych rzeczy za pomocą jQuery, takich jak animacja, tworzenie i usuwanie elementów i więcej ...
Wiele się z tego nauczyłem. Pokazuje, jak łatwo jest używać jQuery. Teraz to uwielbiam i potrafię czytać i rozumieć każdy skrypt jQuery, nawet jeśli jest złożony.
Oto przykład, który podoba mi się „ Zmiana rozmiaru tekstu ”
1- jQuery ...
2- Stylizacja CSS ...
2- HTML ...
Bardzo polecam te samouczki ...
http://blog.themeforest.net/screencasts/jquery-for-absolute-beginners-video-series/
źródło
Asynchroniczna funkcja each ()
Jeśli masz naprawdę złożone dokumenty, w których uruchomienie funkcji jquery każda () blokuje przeglądarkę podczas iteracji i / lub Internet Explorer wyświetla komunikat „ czy chcesz kontynuować uruchamianie tego skryptu ”, to rozwiązanie uratuje ten dzień.
Pierwszy sposób, w jaki możesz go użyć, jest taki sam jak każdy ():
Opcjonalnie 2. parametr pozwala określić prędkość / opóźnienie między iteracji , które mogą być użyteczne dla animacji ( w poniższym przykładzie będzie czekać na 1 sekundę między iteracji ):
Pamiętaj, że ponieważ działa to asynchronicznie, nie możesz polegać na ukończeniu iteracji przed następnym wierszem kodu, na przykład:
Napisałem to dla wewnętrznego projektu i chociaż jestem pewien, że można go ulepszyć, zadziałało to, czego potrzebowaliśmy, więc mam nadzieję, że niektórym z was okaże się ono przydatne. Dzięki -
źródło
Syntactic shorthand-sugar-thing - Buforuj kolekcję obiektów i wykonuj polecenia w jednym wierszu:
Zamiast:
Ja robię:
Nieco „prawdziwy” przypadek użycia może być następujący:
źródło
$(this).siblings().removeClass("hover")
. Wiem, że to brzmi jak mała rzecz, ale za każdym razem, gdy zmieniasz DOM, może zostać uruchomione inne przerysowanie przeglądarki. Inne możliwości obejmują zdarzenia dołączone do DOMAttrModified lub klasy zmieniające wysokość elementu, które mogłyby odpalić inne detektory zdarzeń „zmieniające rozmiar”.cache.not(this).removeClass("hover")
Lubię deklarować
$this
zmienną na początku funkcji anonimowych, więc wiem, że mogę odwołać się do jQueried to.Tak jak:
źródło
Zapisz obiekty jQuery w zmiennych do ponownego wykorzystania
Zapisanie obiektu jQuery w zmiennej pozwala na jej ponowne użycie bez konieczności przeszukiwania DOM, aby go znaleźć.
(Jak sugeruje @Louis, teraz używam $, aby wskazać, że zmienna zawiera obiekt jQuery.)
Jako bardziej złożony przykład, powiedzmy, że masz listę produktów spożywczych w sklepie i chcesz pokazać tylko te, które spełniają kryteria użytkownika. Masz formularz z polami wyboru, każdy zawierający kryteria. Pola wyboru mają nazwy takie jak
organic
ilowfat
, a produkty mają odpowiednie klasy -.organic
itp.Teraz możesz kontynuować pracę z tym obiektem jQuery. Za każdym razem, gdy klikane jest pole wyboru (aby zaznaczyć lub odznaczyć), zacznij od głównej listy potraw i odfiltruj na podstawie zaznaczonych pól:
źródło
$
przodu. np.var $allItems = ...
$
oznacza to, że jest to obiekt jQuery, który ułatwi wizualne odróżnienie od innych zmiennych.Wygląda na to, że większość interesujących i ważnych wskazówek została już wspomniana, więc ta jest tylko małym dodatkiem.
Mała wskazówka to funkcja jQuery.each (obiekt, wywołanie zwrotne) . Prawdopodobnie wszyscy używają funkcji jQuery.each (callback) do iteracji samego obiektu jQuery, ponieważ jest on naturalny. Funkcja narzędzia jQuery.each (obiekt, wywołanie zwrotne) iteruje obiekty i tablice. Przez długi czas jakoś nie widziałem, po co to może być, oprócz innej składni (nie mam nic przeciwko pisaniu wszystkich modnych pętli) i trochę się wstydzę, że dopiero niedawno uświadomiłem sobie jego główną siłę.
Chodzi o to, że ponieważ treść pętli w jQuery.each (obiekt, wywołanie zwrotne) jest funkcją , za każdym razem w pętli otrzymujesz nowy zakres, co jest szczególnie wygodne, gdy tworzysz zamknięcia w pętli.
Innymi słowy, typowym powszechnym błędem jest zrobienie czegoś takiego:
Teraz, gdy wywołasz funkcje w
functions
tablicy, otrzymasz trzykrotnie alert z zawartością,undefined
która najprawdopodobniej nie jest tym, czego chciałeś. Problem polega na tym, że istnieje tylko jedna zmiennai
i odnoszą się do niej wszystkie trzy zamknięcia. Po zakończeniu pętli końcowa wartośći
wynosi 3 isomeArrary[3]
wynosiundefined
. Możesz obejść ten problem, wywołując inną funkcję, która stworzy dla ciebie zamknięcie. Lub korzystasz z narzędzia jQuery, które zrobi to za Ciebie:Teraz, gdy wywołujesz funkcje, otrzymujesz trzy alerty o treści 1, 2 i 3, zgodnie z oczekiwaniami.
Ogólnie rzecz biorąc, nie można tego zrobić samodzielnie, ale dobrze jest mieć.
źródło
Uzyskaj dostęp do funkcji jQuery jak do tablicy
Dodaj / usuń klasę na podstawie wartości logicznej ...
Czy krótsza wersja ...
Nie tak wiele przypadków użycia. Niemniej jednak; Myślę, że jest fajnie :)
Aktualizacja
Na wypadek, gdybyś nie był typem do komentowania, ThiefMaster wskazuje, że toggleClass akceptuje wartość logiczną , która określa, czy klasa powinna zostać dodana czy usunięta. Jeśli chodzi o powyższy przykładowy kod, byłoby to najlepsze podejście ...
źródło
$('selector').toggleClass('name_of_the_class', b);
.Aktualizacja:
Wystarczy umieścić ten skrypt na stronie, a otrzymasz konsolę Firebug, która wyskakuje w celu debugowania w dowolnej przeglądarce. Nie jest tak w pełni funkcjonalny, ale nadal jest całkiem pomocny! Pamiętaj, aby go usunąć, gdy skończysz.
Sprawdź ten link:
Od sztuczek CSS
Aktualizacja: Znalazłem coś nowego; jest to JQuery Hotbox.
JQuery Hotbox
Google obsługuje kilka bibliotek JavaScript w Google Code. Ładowanie go stamtąd oszczędza przepustowość i ładuje się szybko, ponieważ został już buforowany.
Lub
Możesz również użyć tego, aby określić, kiedy obraz jest w pełni załadowany.
„Console.info” firebuga, którego możesz użyć do zrzucenia wiadomości i zmiennych na ekran bez konieczności używania okien alarmowych. „console.time” pozwala łatwo skonfigurować licznik czasu, aby zawinąć sporo kodu i zobaczyć, ile to zajmuje.
źródło
Jeśli to możliwe, używaj metod filtrowania przez pseudo selektory, aby jQuery mógł używać querySelectorAll (co jest znacznie szybsze niż skwierczenie). Rozważ ten selektor:
Tego samego wyboru można dokonać za pomocą:
Co musi być szybsze, ponieważ początkowy wybór „.class” jest zgodny z QSA
źródło
Usuń elementy z kolekcji i zachowaj łańcuchowość
Rozważ następujące:
filter()
Funkcji usuwa elementy z obiektu jQuery. W takim przypadku: wszystkie elementy li nie zawierające tekstu „One” lub „Two” zostaną usunięte.źródło
Zmiana typu elementu wejściowego
Zetknąłem się z tym problemem, gdy próbowałem zmienić typ elementu wejściowego już dołączonego do DOM. Musisz sklonować istniejący element, wstawić go przed starym elementem, a następnie usunąć stary element. W przeciwnym razie to nie działa:
źródło
Rozsądne użycie skryptów jQuery innych firm, takich jak sprawdzanie poprawności pól formularza lub parsowanie adresów URL. Warto zobaczyć, o co chodzi, abyś wiedział, kiedy następnym razem spotkasz się z wymaganiem JavaScript.
źródło
Łamanie linii i łańcuchowość
Podczas łączenia wielu połączeń w kolekcje ...
Możesz zwiększyć czytelność dzięki podziałom linii. Lubię to:
źródło
Użyj .stop (prawda, prawda), gdy uruchomienie animacji uniemożliwia jej powtórzenie. Jest to szczególnie przydatne w przypadku animacji najazdu.
źródło
Korzystanie z anonimowych funkcji wykonujących się w wywołaniu metody, takich jak
.append()
iteracja przez coś. TO ZNACZY:Używam tego do iteracji przez rzeczy, które byłyby duże i niewygodne, aby wyrwać się z mojego łańcucha do budowania.
źródło
Obsługa atrybutów danych HTML5 na sterydach!
Funkcja danych została wspomniana wcześniej. Dzięki niemu możesz powiązać dane z elementami DOM.
Ostatnio zespół jQuery dodał obsługę niestandardowych atrybutów danych * HTML5 . I jakby to nie wystarczyło; zasilili siłą funkcję danych steroidami, co oznacza, że możesz przechowywać złożone obiekty w postaci JSON, bezpośrednio w swoim znaczniku.
HTML:
JavaScript:
źródło