jquery Event.stopPropagation (), кажется, не работает - PullRequest
22 голосов
/ 14 июля 2009

Я совершенно не понимаю, что это должно делать? Я ожидаю, что если я вызову 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>

1 Ответ

50 голосов
/ 14 июля 2009

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

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

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

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