Problém týkající se živé události

Právě jsem četl http://api.jquery.com/event.stopPropagation/

Protože metoda .live() zpracovává události, jakmile se přenesou do horní části dokumentu, není možné zastavit šíření živých událostí

Z tohoto tvrzení jsem byl trochu zmatený, může mi někdo vysvětlit totéž na nějakém příkladu?

Odpověď

Živá metoda váže obslužnou rutinu k dokumentu a identifikuje, který prvek spustil událost z event.target vlastnictví.

Skutečný obslužný program je tedy nahoře (z hlediska hierarchie ).

stopPropagation zabrání bublání, aby stoupalo v hierarchii DOM, ale protože handler je již nahoře (v .live případ ) není žádné horní místo, kam by se dalo probublávat ..

příkladový pokus ..

- document
  - div
    - link

svážete obslužnou rutinu události kliknutí k odkazu (pomocí bind nebo click metoda ).

Když kliknete na odkaz, spustí se obslužná rutina, ale navíc událost click přejde na DOM, dokud nedosáhne dokumentu, a také spustí obslužné rutiny kliknutí vázané na div a dokument. (pokud nepoužíváte .stopPropagation )

Případně, pokud použijete .live způsob, jak svázat obsluhu události, bude svázán s dokumentem. Pokud nyní kliknete na odkaz, událost (která se nespustí okamžitě, protože na ni není vázán žádný handler ) přirozeně přejde na DOM (spustí obslužné nástroje kliknutí, na které narazí). ). Jakmile se dostane k dokumentu, spustí náš vlastní handler. Ale není tam žádný svršek, takže stopPropagation je v tomto bodě k ničemu.