我遇到了一个问题,即我的单次单击事件总是干扰我的双击事件,因此即使我双击,也会调用该单击事件。
下面是我在上面找到的解决方案之前的代码:
grid.bind('change', function() {
SearchPSelected();
});
$('#PGrid').delegate('tbody>tr', 'dblclick', function(e) {
SearchPSelected();
GotoNextView();
});下面是我遵循解决方案之后的代码:
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
});在尝试的解决方案中,什么都不会被调用(通过来自firebug的检查),我不知道为什么?我对js还比较陌生(不是我选择的语言),所以我可能遗漏了什么?
发布于 2014-12-31 16:01:17
我解决了我的问题。下面是修复方法。我不得不删除上面解决方案中的click和dblclick方法的冗余。
var DELAY = 700,
clicks = 0,
timer = null;
$('#PGrid').delegate('tbody>tr','click', function (e) {
clicks++; //count clicks
if (clicks === 1) {
timer = setTimeout(function () {
SearchPSelected();
clicks = 0; //after action performed, reset counter
}, DELAY);
} else {
clearTimeout(timer); //prevent single-click action
SearchSelected();
GotoNextView();
clicks = 0; //after action performed, reset counter
}
});https://stackoverflow.com/questions/27713304
复制相似问题