事件冒泡或循环回调?

时间:2014-04-15 08:21:28

标签: javascript jquery knockout.js

我遇到了JQuery / javascript / Knockout.js

的问题

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

例如,具有警报的点击事件。

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

但是,如果我第二次点击,它会发出两次警报。

这是第三次,依此类推,它按照被调用的次数循环。

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

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

你怎么称呼这个问题?是事件冒泡吗?

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

2 个答案:

答案 0 :(得分:0)

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

由于.on事件每次点击都会堆叠,一旦你点击它两次,事件也会发射两次,然后我必须在.on之前插入.off()('click',functionName); < / p>

这就是这样的:

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

这应该清除所有事件堆叠。

答案 1 :(得分:0)

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

示例:

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

当孩子被点击时,其处理程序 doSomething 将被触发一次,然后也会触发再次调用 doSomething 的父点击处理程序。 / p>

为防止在此类情况下传播事件,您可以在内部元素中将额外的 clickBubble 绑定设置为false。

示例:

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

有关点击装订here的所有详细信息的详细信息。