Hallo Jörg,
du Spaßvogel, du kannst doch nicht erwarten, ein click-Event durch stopPropagation in einem change-Eventhandler zu stoppen. Das sind separate Events und sie werden separat geroutet. Vor allem wird das change-Event erst verarbeitet, wenn das click-Event schon längst Geschichte ist.
Es ist nicht so, dass die Checkbox das change-Event eigenständig kontrolliert. Du klickst auf die Checkbox. Das click-Event wird nun vom Browser in die Event-Warteschlange gestellt und durchläuft den Event-Dispatch. D.h. es hat die capturing-Phase (vom dokument hinunter zur Checkbox) und die bubbling-Phase (von der Checkbox hoch zum dokument) und auf jeder Stufe können Eventhandler lauern. Solange keiner von denen preventDefault aufruft, findest danach das Defaultverhalten statt (danke, Linuchs, das war mir bis eben nicht richtig klar), und das besteht darin, den checked-Zustand der Checkbox zu ändern und ein change-Event in die Warteschlange zu stellen.
Deswegen bekommst Du auch erst die click-Meldung vom div und danach die change-Meldung.
Rolf
sumpsi - posui - obstruxi