Główna zawartość
Kurs: Programowanie > Rozdział 7
Lekcja 4: Techniki jQuery- Kolekcje jQuery vs Węzły DOM
- Zmienne w jQuery
- Iterowanie przez kolekcje jQuery
- Wyzwanie: Zapętlony język
- Przypomnienie: Kolekcje jQuery i pętle
- Łączenie metod jQuery
- Wyzwanie: Daisy chain
- Za kulisami: Przeglądaj kod źródłowy jQuery
© 2024 Khan AcademyWarunki użytkowaniapolitykę prywatnościInformacja o plikach cookie
Przypomnienie: Kolekcje jQuery i pętle
Kolekcje w jQuery
Gdy korzystasz z jQuery, aby znaleźć element, jQuery zwraca obiekt kolekcji jQuery:
var $heading = $('h1');
Powszechną praktyką jest zapisywanie nazw zmiennych przechowujących obiekty z kolekcji jQuery z prefiksem
$
. Pomaga to rozróżnić zmienne przechowujące obiekty z kolekcji jQuery od zmiennych zawierających węzły DOM.Jeśli chcesz uzyskać węzeł DOM z obiektu jQuery, to możesz potraktować obiekt jQuery jako tablicę, a następnie użyć nawiasów kwadratowych:
var heading = $heading[0];
Jeśli chciałbyś przekształcić węzeł DOM w element jQuery możesz go przekazać do funkcji jQuery:
var $heading = $(heading);
Iteracja przez kolekcję
Jeśli chciałbyś użyć pętli na kolekcji możesz użyć normalnej pętli
for
lub skorzystać z funkcji jQuery each()
: $("p").each(function(index, element) {
$(element).text( $(element).text() + "!!");
});
Gdy wywołujesz funkcję
each()
musisz przekazać 'funkcję zwrotną' do niej. jQuery wywoła funkcję przekazaną na każdym elemencie kolekcji i przekaże dany indeks i element do tej funkcji.jQuery nada kontekst funkcji na ten konkretny element, oznacza to, że będziesz mógł odnieść się do tego elementu za pomocą słowa kluczowego
this
: $("p").each(function() {
$(this).text( $(this).text() + "!!");
});
Chcesz dołączyć do dyskusji?
- Czemu w tym fragmencie zmienna heading jest poprzedzona znakiem $, skoro zmieniamy tu węzeł DOM w kolekcję jQuery? :
"Jeśli chciałbyś przekształcić węzeł DOM w element jQuery możesz go przekazać do funkcji jQuery:
var $heading = $(heading);"(1 głos) - Nie mogę wykonać zadania "Zapętlony język". Zamiast przetłumaczyć tekst wyswietla ERROR: Expected a string! Oto mój kod:
var $paragraphs = $("p");
$paragraphs.each(function(index, element) {
var $paragraph = $(element);
toPigLatin($(element));
$paragraphs.html(toPigLatin($("p")));
});(1 głos)- Ojojoj, dziewczyno. Troszkę musimy to uporządkować:
var $paragraphs = $("p");
$paragraphs.each(function(index, element) {
var paragraph = $(element);
paragraph.html(toPigLatin( paragraph.html() ) )
} )
Niepotrzebnie wywołujesz funkcję w swoim kodzie "toPigLatin" z elementu, a potem nagle w $paragraphs pojawia się funkcja ze znacznika p ;) To zadanie nie było stricte analogią do filmiku, jednak trzeba było troszkę pomyśleć :) Nie mniej jednak, wysyłam Ci skrócony i poprawny Twój kod :)(4 głosy)