порядок всплытия событий onclick - PullRequest
2 голосов
/ 04 февраля 2012

Я немного запутался в пузыре.

<html>
    <body>
        <div onclick="window.location='http://www.yahoo.com';">
            <span>
                <h3 onclick="window.location='http://www.google.com';">
                    Click me
                </h3>
            </span>
        </div>
    </body>
</html>

Может кто-нибудь объяснить, почему страница изменилась на www.yahoo.com?Как заставить его «пузыриться» вместо «захвата»?

Ответы [ 2 ]

4 голосов
/ 04 февраля 2012

По умолчанию будет пузыриться.В любом случае вы не можете форсировать захват в IE, не используйте его как надежный метод обработки события.

Если вы хотите остановить событие, вам нужно использовать event.stopPropagation(); и event.cancelBubble = true для IE.

Демо: http://jsfiddle.net/AlienWebguy/cZWQg/ (используется window.open(), чтобы вы могли увидеть эффект в jsfiddle).

JQuery нормализует функцию event.stopPropagation(), поэтомуЯ буду работать для всех браузеров.

Пример:

$('h3').click(function(e){
    e.stopPropagation();
    window.location = 'http://www.google.com';
});
0 голосов
/ 04 февраля 2012

при нажатии на h3, он также вызывает нажатие div, таким образом перенаправляя на Yahoo вместо Google

Это может помочь объяснить это лучше, чем я:

http://www.quirksmode.org/js/events_order.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...