If you're seeing this message, it means we're having trouble loading external resources on our website.

Jeżeli jesteś za filtrem sieci web, prosimy, upewnij się, że domeny *.kastatic.org i *.kasandbox.org są odblokowane.

Główna zawartość

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?

  • Awatar blobby green style dla użytkownika Magda Mielczarek
    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)
    Awatar Default Khan Academy avatar dla użytkownika
  • Awatar spunky sam red style dla użytkownika Edyta
    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)
    Awatar Default Khan Academy avatar dla użytkownika
    • Awatar starky tree style dla użytkownika Maciej Król
      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)
Rozumiesz angielski? Kliknij tutaj, aby zobaczyć więcej dyskusji na angielskiej wersji strony Khan Academy.