Diferența dintre prevenirea defecțiunilor, stoppropagation și stopimmediatepropagation, blogul stepan suvorov

În primul rând, majoritatea dezvoltatorilor nu vă deranjează cu astfel de întrebări și doar întoarceți fals în apelul de apel când trebuie să opriți execuția ulterioară, adică:







Se pare că e bine, dar înțelegi ce se întâmplă în spatele ecranului când dai clic pe link? Primul - da, ați atins obiectivul dvs., pe care o eviți link-uri de trafic (aici event.preventDefault de sarcină () metodă), dar, de asemenea, opriți evenimentele (propagare) răspândit (de fapt împlinit event.stopPropagation ()), iar acum apel invers -funtsiya returnează false .

Așa cum ați înțeles deja, această metodă mărește curbura codului.







Dacă doriți doar să împiedicați acțiunea implicită a browserului, atunci ar trebui să utilizați metoda preventDefault:

Mergem mai departe. Ce este stopPropagation. Va fi mai ușor să înțelegem exemplul. Să presupunem că avem o astfel de structură HTML:

Și doi agenți:

Putem verifica faptul că atunci când faceți clic pe un link, culoarea blocului nu se schimbă în galben și manipularea însăși nu este apelată. Și toate datorită metodei stopPropagation (). care oprește barbotarea evenimentului "clic" la elementele părinte.

Iată un exemplu complet. Dacă eliminăm de acolo stopPropagation (). atunci putem să ne asigurăm că totul funcționează.

Și ce este stopPromoția intermediară (). și ce este diferit de stopPropagation ()? Imediat un exemplu în răspuns. După cum puteți vedea stopImmediatePropagation () se oprește nu numai evenimentele de ascensiune de elemente părinte, dar, de asemenea, se oprește toate stivuitoare ulterioare ale unui eveniment specific acestui element.







Trimiteți-le prietenilor: