控制台记录器在一次鼠标按下时调用两次
Console logger called twice on one mousedown
我在使用 jQuery 的 onmousedown 时遇到了一个奇怪的问题。我有一个插件,您可以为其分配按钮并添加一些选项,如下所示:
$.lollipopbutton(".buttons button", {
bubble_color: "rgba(0,0,0,1)"
});
此插件中发生的一件事是当您单击按钮时,将触发动画。但是,我只想让这个动画一次被触发 x 次。因此,我添加了选项 maxClicks
(用于测试目的的默认值 = 10)。此外,每个按钮都有一个 jQuery 数据元素来跟踪计数器:
counter = $this.data("counter") || 0;
然后我们可以将计数器与 maxClicks 选项进行比较:
if (counter <= args.maxClicks) {}
然后把我们只想一次执行两次的函数放在那里:
if (counter <= args.maxClicks) {
// Do stuff
$this.data("counter", ++counter);
console.log(counter);
setTimeout(function () {
$this.children(".bubble:first").remove();
if (!$this.children(".bubble").length) {
$this.data("counter", --counter);
}
}, totalTimeout);
}
});
但奇怪的是,每次点击 console.log()
returns 两次,总是两个连续的数字(例如 1 & 2、3 & 4、5 & 6 等等)。
我尝试了所有方法,但无法确定问题所在。我在这里错过了什么?可以找到插件 (wip) here in a fiddle.
它被调用了两次,因为在 lollipopbutton
函数中您附加了一个 mousedown
处理程序。你叫lollipopbutton
喜欢
$.lollipopbutton(".buttons button", {
bubble_color: "rgba(0,0,0,1)"
});
$.lollipopbutton(".buttons button.white", {
text_overlay: false
});
这将附加 mousedown
处理程序两次。
我在使用 jQuery 的 onmousedown 时遇到了一个奇怪的问题。我有一个插件,您可以为其分配按钮并添加一些选项,如下所示:
$.lollipopbutton(".buttons button", {
bubble_color: "rgba(0,0,0,1)"
});
此插件中发生的一件事是当您单击按钮时,将触发动画。但是,我只想让这个动画一次被触发 x 次。因此,我添加了选项 maxClicks
(用于测试目的的默认值 = 10)。此外,每个按钮都有一个 jQuery 数据元素来跟踪计数器:
counter = $this.data("counter") || 0;
然后我们可以将计数器与 maxClicks 选项进行比较:
if (counter <= args.maxClicks) {}
然后把我们只想一次执行两次的函数放在那里:
if (counter <= args.maxClicks) {
// Do stuff
$this.data("counter", ++counter);
console.log(counter);
setTimeout(function () {
$this.children(".bubble:first").remove();
if (!$this.children(".bubble").length) {
$this.data("counter", --counter);
}
}, totalTimeout);
}
});
但奇怪的是,每次点击 console.log()
returns 两次,总是两个连续的数字(例如 1 & 2、3 & 4、5 & 6 等等)。
我尝试了所有方法,但无法确定问题所在。我在这里错过了什么?可以找到插件 (wip) here in a fiddle.
它被调用了两次,因为在 lollipopbutton
函数中您附加了一个 mousedown
处理程序。你叫lollipopbutton
喜欢
$.lollipopbutton(".buttons button", {
bubble_color: "rgba(0,0,0,1)"
});
$.lollipopbutton(".buttons button.white", {
text_overlay: false
});
这将附加 mousedown
处理程序两次。