2011-01-22 11 views
5

pracuję z JQuery już od jakiegoś czasu i zawsze stosuje się następującą do initalise mój javascript:

$(document).ready(function() { 
// Initalisation logic 
}); 

Jednak ostatnio zauważyłam Wiele przykładów stosując następujące:

$(function() { 

}); 

Jaka jest różnica

Dzięki

+0

Dziękuję wszystkim za niesamowitą szybką informację zwrotną !! – Mantisimo

Odpowiedz

8

Zasadniczo nie ma. Format $(...) jest skrótem. Szczegółowe informacje można znaleźć na stronie the API docs dla jQuery().

Lubię używać go tak:

jQuery(function($) { 
    // ...all of my jQuery-specific code here... 
}); 

... bo wtedy, jeśli muszę, mogę używać noConflict jeśli skończę konieczności mieszać coś na stronie, która również chce $ symbol , ale nadal mogę używać $ w moim kodzie (ponieważ jQuery przechodzi do wywołania zwrotnego jako pierwszy argument, i jak widać akceptuję ten argument jako $ w mojej funkcji wywołania zwrotnego   — i tak, że cienie jakiegokolwiek globalnego symbolu $ może być używana inna biblioteka). Powyższe ma również tę zaletę, że mogę mieć symbole globalne na mój kod (var s w funkcji anonimowej), które nie są w rzeczywistości globalsami.

+0

Jak często miksujesz coś ze stroną, która chce mieć symbol $? Jestem po prostu ciekawy, ponieważ nie zdarza się często tam, gdzie pracuję. – finneycanhelp

+0

@finneycanhelp: Nie często staram się unikać mieszania ze sobą zbyt wielu bibliotek. Ale na przykład, jeśli powolna migracja witryny z jQuery do Prototype (lub MooTools) lub z jQuery, 'noConflict' jest ważna, ponieważ prototyp i MooTools również wykorzystują symbol' $ '. –

+0

Pewnie! Na myśl przychodzą Ruby On Rails i Prototype. :) – finneycanhelp

2

Różnica jest kwestią stylu. Jedna to skrót drugiej. :) Zobacz http://api.jquery.com/jQuery/ w pobliżu dna, gdzie jest napisane „wykonuje funkcję gdy DOM jest gotowy do użycia”

Kiedy zapytałem jedną z osób jQuery UI co woleli, powiedział wolał bardziej opisowy sposób. Jednak ludzie w moim sklepie używają tej wersji:

$(function() { 

}); 
1

Różnica polega na tym, że pierwszy jest bardziej czytelny. Więc proszę, użyj tego.

$(document).ready(function() { 
// Initalisation logic 
}); 
+0

Zgadzam się, że '$ (document) .ready (function() {...})' jest bardziej czytelne niż '$ (function() {...})', ale myślę, że 'jQuery (function ($) {...});' jest doskonale czytelny, podobnie jak każdy idiom, musisz go raz nauczyć –

+1

Nie, przekazujesz funkcję jQuery, ale nie ma żadnej wskazówki co do tego, jQuery ma zamiar zrobić z tą funkcją – orlp

+0

Tak jak powiedziałem, jak każdy idiom, musisz go raz nauczyć.Teraz, jeśli ty (jak ja) myślę, że funkcja 'jQuery' ma ** sposób ** zbyt wiele * zupełnie różnych * rzeczy, które robi w zależności od tego, co przekazujesz (nawet robiąc różne rzeczy, gdy przechodzisz w łańcuchach, w zależności od zawartość łańcucha), nie ma tam argumentu, to jedna z moich domowych odpowiedzi na temat jQuery. Ale przynajmniej ma tylko jedną * rzecz, którą robi, gdy tylko przejdziesz przez funkcję. –