У меня проблемы с JQuery/javascript/Knockout.js
События циклически повторяются каждый раз при их вызове.
Например, событие click с предупреждением.
Если я нажму один раз, он будет предупреждать один раз.
НО, если я нажму второй раз, он будет предупреждать дважды.
Это происходит в третий раз и т.д. Он зацикливается на количестве раз, когда он был вызван.
Я сам рискую собой, потому что не могу вставлять коды, если я не дам вам всю программу, что невозможно, потому что это неполный проект компании.
Поэтому мне очень жаль, если у меня нет кодов для предоставления. Мне просто нужны идеи/ответы/возможные решения.
Как вы это называете? Это событие Bubbling?
Поэтому мой главный вопрос: можно ли остановить все события после вызова его один раз? У меня нет инструкций цикла, все, что у меня есть, это некоторые функции и .on('click'...
events
Одна из распространенных ситуаций, когда привязка событий кликов заключается в том, что общий обработчик используется как в родительском, так и в дочернем элементах.
Пример:
<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>
Подробнее обо всех деталях привязки кликов здесь.
Наконец я нашел ответ на свой вопрос.
Поскольку события.on стекаются каждый раз, когда он щелкнул, и как только вы дважды щелкнете по нему, события также будут срабатывать дважды, тогда мне пришлось вставить.off() до.on('click', functionName);
Это делает так:
$('testBtn').off().on('click', functionName);
Это должно очистить все стеки событий.