Подтвердить что ты не робот

Jquery Event.stopPropagation(), похоже, не работает

Неужели я совершенно не понимаю, что это должно делать? Я ожидаю, что если я вызову stopPropagation() в событии, обработчики для этого события не будут инициированы на элементах предка, но приведенный ниже пример не работает таким образом (по крайней мере, в FireFox 3)..

<script type="text/javascript">
    $("input").live("click", function(event){
        console.log("input click handler called")
        event.stopPropagation()
    });

    $("body").live("click", function(event){
        console.log("body was click handler called. event.isPropagationStopped() returns: " + event.isPropagationStopped());
    })

</script>

 ...

<body>
    <input type="text" >
</body>
4b9b3361

Ответ 1

Живые события не соответствуют тем же правилам пузырьков событий. См. Документацию по обработке живых событий.

Цитата из ссылки выше:

Живые события не пузырятся в традиционным образом и не может быть прекратил использование stopPropagation или stopImmediatePropagation. Например, рассмотрим случай двух кликов - один связан с "ли" и еще один "li a". Если на внутреннем будут выведены якорные BOTH события. Это происходит потому, что когда $( "li" ). bind ("click", fn); связан вы на самом деле говорите: "Всякий раз, когда событие щелчка происходит на элементе LI - или внутри элемента LI - вызвать это щелкните событие". обработка для живого события, fn должно return false.