Co oznacza $ (function () {}); robić?

208

Czasami wykonuję funkcję i wywołuję ją później.

Przykład:

function example { alert('example'); }
example(); // <-- Then call it later

Jakoś niektórych funkcji nie można wywołać. Muszę wywołać te funkcje wewnątrz:

$(function() { });

Co $(function() {});i co (function() { });oznaczają oraz jaka jest ich różnica / cel?

jwchang
źródło

Odpowiedzi:

307
$(function() { ... });

jest po prostu skrótem jQuery

$(document).ready(function() { ... });

Jego zadaniem jest (między innymi) zapewnienie, że twoja funkcja zostanie wywołana, gdy wszystkie elementy DOM strony będą gotowe do użycia.

Jednak nie sądzę, że to jest problem, który masz - czy możesz wyjaśnić, co masz na myśli mówiąc: „W jakiś sposób nie można wywołać niektórych funkcji i muszę je wywołać w środku”? Może opublikuj kod, aby pokazać, co nie działa zgodnie z oczekiwaniami?

Edycja: ponowne czytanie pytania, może być tak, że twoja funkcja jest uruchomiona przed załadowaniem strony, a zatem nie będzie działać poprawnie; umieszczenie go w $ (funkcja) rzeczywiście naprawiłoby to!

Russ Clarke
źródło
2
co jeśli $ (function () {}); jest już w $ (dokument) .ready ()?
jwchang
funkcja nie działa bez $ (function (), chociaż jest już w $ (document) ready ().
jwchang 4'11
Dobre pytanie! Uważam, że powinno po prostu działać, ponieważ jQuery wie, że jesteś we właściwym miejscu, ale z pewnością jest to obce; jeśli jesteś w .ready (), możesz zwyczajnie wywołać swoją funkcję. Jeśli to nie działa, opublikuj próbkę, a nawet lepiej - spróbuj zrobić skrzypce jako jsfiddle.net.
Russ Clarke,
4
@JeongWooChang Zrób to tak (function () { ... })();. Musisz dodać, ()aby wywołać swoją funkcję.
Šime Vidas,
3
„Doświadczeni programiści czasami używać skrótów $()dla $( document ).ready(). Jeśli piszesz kod, że ludzie, którzy nie są doświadczeni z jQuery można zobaczyć, to najlepiej użyć długiego formularza.” - learn.jquery.com
thdoan
15

Poniżej znajduje się wywołanie funkcji jQuery:

$(...);

Która jest „funkcją jQuery”. $jest funkcją, a $(...)ty wywołujesz tę funkcję.

Pierwszy podany parametr to:

function() {}

Ten parametr jest funkcją określoną przez użytkownika, a $funkcja wywoła dostarczoną metodę, gdy DOM zakończy ładowanie.

cwharris
źródło
5

Myślę, że mylisz Javascript z metodami jQuery. Wanilia lub zwykły Javascript to coś takiego:

function example() {
}

Funkcję tego rodzaju można wywołać w dowolnym miejscu i czasie.

jQuery (biblioteka zbudowana na Javascript) ma wbudowane funkcje, które generalnie wymagały pełnego renderowania DOM przed wywołaniem. Składnia po zakończeniu jest następująca:

$(document).ready(function() {
});

Tak więc funkcja jQuery, która poprzedzona jest $słowem lub, jQueryjest zwykle wywoływana z tej metody.

$(document).ready(function() {        
    // Assign all list items on the page to be the  color red.  
    //      This does not work until AFTER the entire DOM is "ready", hence the $(document).ready()
    $('li').css('color', 'red');   
});

Pseudo-kod tego bloku to:

Gdy model obiektu dokumentu $(document)jest gotowy .ready(), wywołaj następującą funkcję function() { }. W tej funkcji sprawdź wszystkie <li>na stronie $('li')i za pomocą metody jQuery .CSS () ustaw właściwość CSS „kolor” na wartość „czerwony”.css('color', 'red');

Terry
źródło
2

Jest to skrót do $(document).ready(), który jest wykonywany, gdy przeglądarka zakończy ładowanie strony (co oznacza tutaj „kiedy DOM jest dostępny”). Zobacz: http://www.learningjquery.com/2006/09/introducing-document-ready . Jeśli próbujesz zadzwonić, example()zanim przeglądarka zakończy ładowanie strony, może nie działać.

imm
źródło
1
„zakończone ładowanie strony” jest niedokładne i wprowadza w błąd.
Yahel