Событие Bubbling или Looping Callbacks?

0

У меня проблемы с JQuery/javascript/Knockout.js

События циклически повторяются каждый раз при их вызове.

Например, событие click с предупреждением.

Если я нажму один раз, он будет предупреждать один раз.

НО, если я нажму второй раз, он будет предупреждать дважды.

Это происходит в третий раз и т.д. Он зацикливается на количестве раз, когда он был вызван.

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

Поэтому мне очень жаль, если у меня нет кодов для предоставления. Мне просто нужны идеи/ответы/возможные решения.

Как вы это называете? Это событие Bubbling?

Поэтому мой главный вопрос: можно ли остановить все события после вызова его один раз? У меня нет инструкций цикла, все, что у меня есть, это некоторые функции и .on('click'... events

Теги:
knockout.js

2 ответа

0

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

Пример:

<div id="parent" data-bind="click: doSomething">
    <a data-bind="click: doSomething">Clickable</a>
</div>

Когда дочерний элемент щелкнет по его обработчику, doSomething будет вызван один раз, а затем обработчик родительского клика, который снова вызывает doSomething, также будет запущен.

Чтобы предотвратить распространение событий в таких сценариях, вы можете установить дополнительную привязку clickBubble к false во внутреннем элементе.

Пример:

<div id="parent" data-bind="click: doSomething">
    <a data-bind="click: doSomething, clickBubble: false">Clickable</a>
</div>

Подробнее обо всех деталях привязки кликов здесь.

0

Наконец я нашел ответ на свой вопрос.

Поскольку события.on стекаются каждый раз, когда он щелкнул, и как только вы дважды щелкнете по нему, события также будут срабатывать дважды, тогда мне пришлось вставить.off() до.on('click', functionName);

Это делает так:

$('testBtn').off().on('click', functionName);

Это должно очистить все стеки событий.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню