2010-02-12 16 views

Odpowiedz

6

W uchwale, nie ma żadnej różnicy, są równoważne

z właściwego kodu źródłowego

jQuery = window.jQuery = window.$ = function(selector, context) { 
    // The jQuery object is actually just the init constructor 'enhanced' 
    return new jQuery.fn.init(selector, context); 
} 

jQuery.fn = jQuery.prototype = { 
init: function(selector, context) { 

    /* .... irrelevant code.... */ 

    // HANDLE: $(function) 
    // Shortcut for document ready 
    else if (jQuery.isFunction(selector)) 
     return jQuery(document).ready(selector);  
    } 
} 
+0

+1 - Byłem zbyt leniwy, aby to sprawdzić. :) – ChaosPandion

+0

Właśnie zdarzyło mi się mieć to otwarte przede mną :) –

+0

Równoważne w efekcie, a obecnie, ale nie są dokładnie takie same (oczywiście). Jednoznacznie żąda, aby funkcja była powiązana jako procedura obsługi zdarzeń ze zdarzeniem "gotowym", a druga to mniej szczegółowe żądanie uruchomienia czegoś w "gotowym" czasie, bez wyraźnego ustalenia tego w "gotowym" zdarzeniu. – Pointy

0

Czy chodziło Ci o:

$(function() 
{ 
    /* ... */ 
}); 

Są one równoważne w jQuery. Ten ostatni jest skrótem dla pierwszego.

1

Jeśli masz na myśli

$(document).ready(function() {/* code here */}); 

i

$(function() {/* code here */}); 

wtedy nie ma żadnej różnicy między nimi. Ten drugi to skrót, który robi to samo, co poprzedni.

1

Wszystkie powyższe oświadczenia robią dokładnie to samo. Wewnętrznie jednak drugi wywoła pierwszy.

1

myślę, że ważne jest, aby podkreślić, że oficjalna linia jQuery jest, że druga składnia:

Preferowane jest:
$(function() { 
    // code here 
}); 

. Czemu? Ponieważ przewiduje on, że Mr. Resig & Co wymyśli nowy, doskonały sposób przeprowadzenia inicjacji przy obciążeniu, która jest o wiele lepsza niż w przypadku zdarzenia "gotowego". Jeśli to zrobią, i użyjesz prostszego (drugiego) sposobu robienia rzeczy, twój kod natychmiast skorzysta na ulepszeniu bez potrzeby zmiany czegokolwiek. Jeśli używasz jawnego powiązania do zdarzenia "gotowego", trzymasz się tego podejścia, dopóki go nie zmienisz.

+0

Wydaje mi się bardzo prawdopodobne, że jeśli zostanie znaleziony lepszy sposób uruchomienia kodu po wczytaniu DOM, zespół zdecyduje się zmienić kod w gotowym zdarzeniu i nadal delegować '$ (function() {});' do tego. –

Powiązane problemy