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.