jquery - När och varför ska man 'return false' i JavaScript?


När och varför ska man använda return false i JavaScript?

Svar #1

Ofta, i händelsehanterare, såsom onsubmit, är det ett sätt att returnera false för att tala om för händelsen att den inte faktiskt ska utlöstas. Så, säg, i fallet med onsubmit, skulle detta innebära att formuläret inte skickas.

Svar #2

Jag antar att du syftar på det faktum att du ofta måste lägga till ett 'return false;'-uttalande i dina händelsehanterare, alltså

<a href="#" onclick="doSomeFunction(); return false;">...

'return false;' i detta fall stoppar webbläsaren från att hoppa till den aktuella platsen, som anges av href="#" - istället körs endast doSomeFunction(). Det är användbart när du vill lägga till händelser på ankartaggar, men inte vill att webbläsaren ska hoppa upp och ner till varje ankare vid varje klick.

Svar #3

Det används för att stoppa spridningen av händelsen. Du ser när du har två element som båda har en klickhändelsehanterare (till exempel)

-----------------------------------
| element1                        |
|   -------------------------     |
|   |element2               |     |
|   -------------------------     |
|                                 |
-----------------------------------

Om du klickar på det inre elementet (element2) kommer det att utlösa ett klickhändelse i båda elementen: 1 och 2. Det kallas "Event bubbling". Om du vill hantera händelsen endast i element2 måste händelsehanteraren returnera false för att stoppa händelsens propagation.

Ett annat exempel är länken onclick-hanteraren. Om du vill stoppa en länk från att fungera kan du lägga till en onclick-hanterare och returnera false för att stoppa händelsen från att spridas till standardhanteraren.

Svar #4

Ehm ... hur är det i en boolesk funktion för att indikera 'inte sant'?

Svar #5

Jag kom också till den här sidan efter att ha sökt på "js, när man ska använda 'return false;' Bland de andra sökresultaten fanns en sida som jag tyckte var mycket mer användbar och enkel, på Chris Coyiers CSS-Tricks-sida: Skillnaden mellan 'return false;' och 'e.preventDefault();'

Huvudpoängen i hans artikel är:

funktion() { returnera false; }

// ÄR LIKA MED

funktion(e) { e.preventDefault(); e.stopPropagation(); }

men jag skulle fortfarande rekommendera att läsa hela artikeln.

Uppdatering: Efter att ha diskuterat fördelarna med att använda return false; som en ersättning för e.preventDefault(); & e.stopPropagation(); påpekade en av mina kollegor att return false också stoppar callback-exekvering, som beskrivs i denna artikel: jQuery Events: Stop (Mis)Using Return False.

Relaterade artiklar