事件气泡或循环回调



JQuery/javascript/Kockout.js 出现问题

每次调用事件时,事件都会递增循环。

例如,一个带有警报的点击事件。

如果我点击一次,它就会提醒一次。

但是,如果我第二次点击,它会提醒两次。

这种情况持续到第三次,依此类推,它按被调用的次数循环。

我在这里冒着很大的风险,因为我不能粘贴代码,除非我给你整个程序,这是不可能的,因为这是一个不完整的公司项目。

因此,如果我没有任何代码可以提供,我非常抱歉。我只需要想法/答案/可能的解决方案。

你把这些问题称为什么?是事件泡沫吗?

所以我的主要问题是,在调用一次之后,是否可以停止所有事件?我没有任何循环语句,我只有一些函数和一个.on('click'...事件

我终于找到了问题的答案。

由于每次点击.on事件都会叠加,一旦你点击两次,事件也会触发两次,所以我不得不在.on('click',functionName)之前插入.off();

这使得它是这样的:

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

这应该会清除所有的事件堆栈。

绑定单击事件时的一种常见情况是在父元素和子元素中都使用一个通用处理程序。

示例:

<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>

有关点击绑定的所有详细信息,请点击此处。

最新更新