Захват и Bubbling с использованием jQuery

Я новичок в jQuery, и я пытаюсь понять концепцию захвата и пузыря.

Я прочитал много статей, но большинство из них описывало распространение событий для Javascript.

Предположим, что у нас есть следующий код HTML:

<div id="outter">

        outter

        <div id="inner">

                inner
        </div>

</div>

Захват - это фаза, когда мы спускаемся вниз по элементам DOM, и пузырьки - это когда мы поднимаемся.

В Javascript вы можете решить, каким образом следовать (используя истинные или ложные параметры):

element.addEventListener('click',doSomething,true) --> capture phase
element.addEventListener('click',doSomething,false)  --> bubble phase

Есть ли что-то похожее для jQuery, чтобы обозначить, какой способ следовать, кроме способа JavaScript?

Также использует ли jQuery фазу по умолчанию? Например, пузырь?

Потому что я использовал следующий код, чтобы проверить это:

CSS

<style>

  div {
            border: 1px solid green;
            width: 200px;

       }

</style>

JQuery

<script>

    $(document).ready(function(){

        $('div').click(function(){
            $(this).animate({'width':'+=10px'},{duration: 3000})
        });

    });

</script>

Похоже, что когда я нажимаю на div-outter, только этот div оживляет более крупный div. Когда я нажимаю на внутренний div, div делится на более крупные div.

Я не знаю, ошибаюсь ли я, но этот тест показывает, что метод распространения браузера по умолчанию - это пузырь.

Пожалуйста, поправьте меня, если я ошибаюсь.

Ответы

Ответ 1

jQuery использует только всплывающие события. Если вы хотите добавить обработчик событий, который использует модель захвата, вы должны сделать это явно, используя addEventListener, с третьим аргументом true как показано в вопросе.

Ответ 2

Событие, которое начинается, начиная с самого внутреннего элемента до самого внешнего элемента.

Захват событий, который начнет выполняться с внешнего элемента на самый внутренний элемент.

Но jQuery будет использовать всплывающее окно событий. Мы можем добиться захвата событий с:

$("body")[0].addEventListener('click', callback, true);

Третий параметр в addEventListener, который сообщает браузеру, принимать ли всплывающее окно или захват события.

По умолчанию это ложь.

Если оно ложно, тогда будет происходить всплытие событий. Если это правда, тогда потребуется захват событий.