jQuery:dblclick上的触发事件不起作用(但在keyup等上起作用)

jQuery: Triggering event on dblclick not working (but working on keyup etc.)

本文关键字:但在 keyup 起作用 不起作用 事件 dblclick jQuery      更新时间:2023-09-26

我是JS/jQuery的新手,在我的文档中使用以下代码段,准备在具有特定类的TD上调用keyup函数:

$(document).on('keyup', '.calcInOut, .calcBalance', calculateSumsKPR);

该函数根据表中的输入计算一些数据,然后使用计算结果更新单元格。该表是一个标准的HTML表,包含大量动态添加的行和TD,所有可编辑的TD都包含一个内容可编辑的div,用户可以在其中输入数字。

到目前为止,一切都按预期进行,但由于某种原因,我无法在双击时调用相同的函数。

我尝试使用'dblclick keyup'而不是'keyup',还尝试复制整个片段并用dblclick替换keyup,但两者都没有在双击时触发函数。

双击时我确实有另一个事件,它是单独启动的,并在双击时清除div的内容,但我不应该在这个上调用两个单独的事件吗?

示例TD:

<td class="calcInOut editable"><div contenteditable="true"></div></td>

非常感谢您在这方面的帮助,Mike

这里有选项。。。

看来您可能试图重载事件绑定,但这不会起作用。

不工作

$(object).on("click dblclick keyup", function() { /*do stuff*/ })
$(object).bind("click dblclick keyup", function() { /*do stuff*/ })

确实有效

$(object).on("click", function() { /*do stuff*/ }).on("dblclick", function() { /*do stuff*/ }).on("keyup", function() { /*do stuff*/ });
$(object).bind("click", function() { /*do stuff*/ }).on("dblclick", function() { /*do stuff*/ }).on("keyup", function() { /*do stuff*/ });

$(object).click(function() { /*do stuff*/ }).dblclick(function() { /*do stuff*/ }).keyup(function() { /*do stuff*/ });

假设您的事件都希望激发相同的过程/方法/过程。。。

然后你会这样做:

function doStuff() {
/*do stuff*/
}
$(object).on("click", doStuff).on("dblclick", doStuff).on("keyup", doStuff);

$(object).bind("click", doStuff).on("dblclick", doStuff).on("keyup", doStuff);

$(object).click(doStuff).dblclick(doStuff).keyup(doStuff);

这对我有效:

$(".js-double-click").dblclick(function() {
  alert("Handler for .dblclick() called.");
});

这是一个工作代码笔:http://codepen.io/socketwiz/pen/OVQdqK?