2012-06-10 11 views
8

Uczę się jQuery z książki o nazwie Head First jQuery. Książka jest bardzo łatwa do nauczenia. Chodzi o to, że istnieje funkcja .each() (zawarta w obrazie, który skanowałem), która ma parametr function(). Parametry function() to index i value. Indeks jest wyjaśniony na stronie, ale co z wartością? A także, skoro jest to funkcja anonimowa (która nie może być ponownie wykorzystana), w jaki sposób bierze ona jakiekolwiek parametry?jQuery.each (funkcja (indeks, wartość) {}); Czym jest wartość?

+5

http://api.jquery.com/each – BoltClock

+0

i kto mówi, że funkcje anonimowe nie mogą przyjmować parametrów? :) – BoltClock

Odpowiedz

1

Ten drugi element, który nazywamy wartością, to o wartości kolekcji, która jest obecnie przetwarzana przez każdą funkcję.

Dla twojego drugiego pytania - anonimowe funkcje mogą być ponownie użyte, tylko dlatego, że nie mają nazwy, nie oznacza, że ​​nie mogą mieć parametrów lub być wykonane. Zobacz następujący przykład:

function execute_fn(fn) { 
    fn(1,2); 
} 

execute_fn(function(a,b) { ... }); 
+0

Czy ** wartość kolekcji, która jest aktualnie przetwarzana ** oznacza to: - $ (". MyClass"). Each (funkcja (indeks, wartość) {}); I mamy: - cadence441

+0

... kontynuacja Więc wartość pierwszego elementu stanie się "Button"? I czy (fn) jQuery jest zdefiniowany lub zdefiniowany przez użytkownika? Mam na myśli, że funkcja .each() jest zdefiniowana przez jQuery. Tak jak to zdefiniowano (fn) jQuery? Jeśli jest zdefiniowany przez użytkownika, nie przekazujemy niczego jako parametru fn, prawda? I to samo dla (a, b) prawda? – cadence441

+0

W twoim przykładzie w pierwszej wartości wykonania będzie to element DOM przycisku (tak by było, w każdym z nich działa drugi parametr i ten punkt do tego samego obiektu) i następnym razem byłby to element DOM przycisku przesyłania. Odnosząc się do mojego przykładu: powinien on tylko pokazywać, w jaki sposób anonimowa funkcja może być wykonywana przez inną funkcję. W ogóle nie korzysta z jQuery. Polecam zapoznać się z podstawami JavaScript. JavaScript może wyglądać jak C++/C/Java, ale jest zupełnie inny. – Preli

17

Istnieją dwie metody each w jQuery. Jedna służy do jazdy na rowerze nad obiektem jQuery, który zawiera wiele dopasowań. Na przykład, załóżmy, że chcemy znaleźć wszystkie akapity na stronie:

$("p").each(function(){ 
    // Do something with each paragraph 
}); 

Po drugie, istnieje bardziej ogólny each dla iteracji nad obiektami lub tablic:

var names = ["Jonathan", "Sampson"]; 
$.each(names, function(){ 
    // Do something with each name 
}); 

Kiedy cykle jQuery nad elementami w którykolwiek z tych przykładów, utrzymuje liczbę obiektów, które aktualnie obsługuje. Kiedy wykonuje naszą anonimową funkcję, przekazuje dwa parametry - aktualną wartość, na której się znajdujemy (indeks) i ten obiekt (wartość).

var names = ["Jonathan", "Sampson"]; 
$.each(names, function(index, value){ 
    alert(value + " is " + index); 
}); 

Który wyprowadza "Jonathan jest 0", a "Sampson jest 1", ponieważ używamy indeksu opartego na zera.

Ale co z naszym natywnym obiektem jQuery?

$("p").each(function(index, value){ 
    alert(value.textContent); // The text from within the paragraph 
}); 

W tym przypadku value jest rzeczywiste HTMLParagraphElement obiektu, dzięki czemu możemy uzyskać dostęp do właściwości jak textContent lub innerText na to, czy nam się podoba:

+0

Więc 'wartość' jest obiektem, a nie właściwością' value'? Przez własność 'value' mam na myśli, podobnie jak w' input', właściwość 'type', która może być' button', 'submit' i tak dalej istnieje własność' value' również dla typów 'input'. – cadence441

+0

@ cadence441 Tak, "wartość" jest elementem. Może to być element HTML lub może to być ciąg znaków. Lub może to być tablica, obiekt lub liczba - zależy to od kolekcji, na której jeździłeś rowerem. Zauważ, że nazwy zmiennych "input" i "value" nie mają znaczenia - tylko kolejność ma miejsce. Często widzisz, że ludzie zawierają tylko "index", albo będą używać obu pod różnymi nazwami, jak 'i' i' v'. – Sampson

+0

, więc w ostatnim przykładzie "wartość" jest taka sama jak "to"? – Andy

Powiązane problemy