【发布时间】:2015-01-01 00:01:17
【问题描述】:
我有一个问题,我的单击事件一直干扰我的双击事件,即使我双击,单击事件也会被调用。
这是我在 SO 上找到解决方案之前的代码:
grid.bind('change', function() {
SearchPSelected();
});
$('#PGrid').delegate('tbody>tr', 'dblclick', function(e) {
SearchPSelected();
GotoNextView();
});
这是我遵循 SO 解决方案后的代码:
grid = $('#PGrid').data('kendoGrid');
var DELAY = 700,
clicks = 0,
timer = null;
grid.on("click", function(e) {
clicks++; //count clicks
if (clicks === 1) {
timer = setTimeout(function() {
grid.bind('change', function() {
SearchPSelected();
}); //perform single-click action
clicks = 0; //after action performed, reset counter
}, DELAY);
} else {
clearTimeout(timer); //prevent single-click action
$('#PGrid').delegate('tbody>tr', 'dblclick', function(e) {
SearchPSelected();
GotoNextView();
}); //perform double-click action
clicks = 0; //after action performed, reset counter
}
})
.on("dblclick", function(e) {
e.preventDefault(); //cancel system double-click event
});
使用尝试的解决方案,没有任何调用(通过萤火虫的检查),我不知道为什么?我对 js 还是比较陌生(不是我选择的语言),所以我可能会遗漏一些东西?
【问题讨论】:
-
因为点击不关心有没有双击。
-
对 - 在同一个元素上使用“单击”和“双击”在 Web 用户界面中效果不佳。
-
什么意思?所以我不能让单个元素对单击和双击具有不同的操作?我在 SO 上尝试了一个解决方案,但它对我不起作用。
-
你可以同时拥有这两个,但两个事件都会触发。这就是它的设计方式。
标签: javascript jquery settimeout double-click