Por exemplo, veja a lista abaixo:
Vamos supor que ela foi composta com uma DIV com uma UL dentro:
Vamos supor que queremos que, ao clicar em um item da lista LI, este se torne azul claro, indicando que está selecionado. Mas queremos que quando o usuário clique na área branca da DIV, nenhum elemento fique mais selecionado. Neste caso, devemos definir o evento onclick dos itens da lista e um outro evento onclick para a DIV. Porém, como os itens estão dentro da DIV, quando o usuário clicar no item, este clique será transferido também para a DIV. A consequência disso é que será chamada a rotina para selecionar o item mas, logo em seguida, será chamada a rotina para desselecionar. Como resolver esse tipo de problema?
Simples: no evento onclick, definir o método que será chamado:
E...
A função Seleciona() será acionada antes da Desseleciona() porque os itens LI são exibidos por cima da DIV. E agora, na função Seleciona(), deve se inserir o código abaixo que irá cancelar a chamada ao evento da DIV ou qualquer outra subsequente.
155: function Seleciona(event) {
156: if (typeof event.stopPropagation != "undefined") {
157: event.stopPropagation();
158: }
159: if (typeof event.cancelBubble != "undefined") {
160: event.cancelBubble = true;
161: }
162: }
Pronto!
Obs: somente testado no IE e no Firefox. O primeiro IF é para o padrão Firefox, o segundo é para o padrão IE.
Obs: a palavra "desseleciona" não existe :P
Obs: para quem não sabe, event é uma palavra reservada que indica o objeto manipulador do evento em questão.



