javascript - Vad gör $ (function() {} );?
Ibland skapar jag en funktion och kallar på funktionen senare.
Exempel :
function example { alert('example'); }
example(); // <-- Then call it later
På något sätt kan vissa funktioner inte anropas. Jag måste anropa dessa funktioner inuti:
$(function() { });
Vad betyder $ (function() {}); och (function() { });, och vad är skillnaden/syftet med dessa?
Svar #1
$(function() { ... });
är bara jQuery-förkortning för
$(document).ready(function() { ... });
Vad det är utformat för att göra (bland annat) är att säkerställa att din funktion kallas när alla DOM-element på sidan är redo att användas.
Jag tror dock inte att det är det problemet du har - kan du förtydliga vad du menar med 'På något sätt kan vissa funktioner inte kallas och jag måste kalla dessa funktioner inuti'? Kanske posta lite kod för att visa vad som inte fungerar som förväntat?
Redigera: När jag läser om din fråga, kan det vara så att din funktion körs innan sidan har laddats klart, och därför kommer den inte att exekvera korrekt; att sätta den i $ (funktion) skulle faktiskt fixa det!
Svar #2
Följande är ett jQuery-funktionsanrop:
$(...);
Vilken är "jQuery-funktionen." $ är en funktion, och $(...) är att du anropar den funktionen.
Den första parametern du har angett är följande:
function() {}
Parametern är en funktion som du specificerade, och $-funktionen kommer att anropa den angivna metoden när DOM har laddats färdigt.
Svar #3
Det är bara en förkortning för $ (document).ready(), som i:
$(document).ready(function() {
YOUR_CODE_HERE
});
Ibland måste du använda det eftersom din funktion körs innan DOM har slutat laddas.
Allt förklaras här: http://docs.jquery.com/Tutorials:Introducing_$ (document).ready()
Svar #4
Lite teori
$ är namnet på en funktion som vilket annat namn som helst som du ger en funktion. Vem som helst kan skapa en funktion i JavaScript och ge den namnet $ som visas nedan:
= function() {
alert('I am in the $ function');
}
JQuery är ett mycket känt JavaScript-bibliotek och de har beslutat att lägga hela sitt ramverk inuti en funktion som heter jQuery. För att göra det enklare för människor att använda ramverket och minska skrivandet av hela ordet jQuery varje gång de vill kalla på funktionen, har de också skapat ett alias för det. Det aliaset är $. Därför är $ namnet på en funktion. Inom jQuerys källkod kan du se detta själv:
window.jQuery = window.$ = jQuery;
Svar på din fråga
Så vad är $ (function() { });?
Nu när du vet att $ är namnet på funktionen, om du använder jQuery-biblioteket, då anropar du funktionen med namnet $ och skickar argumentet function() {} till den. jQuery-biblioteket kommer att anropa funktionen vid rätt tidpunkt. När är den rätta tidpunkten? Enligt jQuery-dokumentationen är den rätta tidpunkten när alla DOM-element på sidan är redo att användas.
Det andra sättet att uppnå detta är på detta sätt:
$(document).ready(function() { });
Som du kan se är detta mer detaljerat, så folk föredrar $ (function() { })
Så anledningen till att vissa funktioner inte kan kallas, som du har märkt, är eftersom de funktionerna ännu inte existerar. Med andra ord har DOM:en inte laddats än. Men om du placerar dem inuti den funktion du skickar till $ som ett argument, är DOM:en laddad vid det laget. Och därför har funktionen skapats och är redo att användas.
Ett annat sätt att tolka $ (function() { }) är på detta sätt:
Hej $eller jQuery, kan du snälla kalla på denna funktion som jag skickar som ett argument när DOM har laddats?
