我有一个选择模式为toggle.的德格栅表我的要求之一是实现对行的双击以触发函数。
以下是我所拥有的:
grid.on('.dgrid-content .dgrid-row:dblclick', function () {
window.alert('Hello world!');
});问题是双击还会导致选择事件、dgrid-select和dgrid-deselect触发,因为它还注册了两个要选择的单次单击。
我尝试过添加此代码,但它不像预期的那样工作:
var timer;
grid.on('.dgrid-content .dgrid-row:click', function (event) {
var row = this;
if (timer) {
event.preventDefault();
event.stopPropagation();
event.stopImmediatePropagation();
clearTimeout(timer);
} else {
timer = window.setTimeout(function() {
// something to make the click go through?
row.emit('something here');
clearTimeout(timer);
}, 250);
}
});有办法做到这一点吗?
我咨询过如何在元素上同时使用onclick和ondblclick?,但在我的案例中,答案似乎行不通。
我还看过misc实用程序,也许我需要的是debounce函数,但我不知道如何使用它。
发布于 2020-09-23 13:42:05
您可以使用来自Dgrid的函数row和cell:
define([
"dojo/_base/declare",
"dojo/_base/lang", // hitch
"dgrid/OnDemandGrid"
], function (declare, lang, OnDemandGrid){
return declare(OnDemandGrid, {
_onSingleClickAction: function (event) {
var row = this.row(event), // dgrid/Grid methods
cell = this.cell(event);
/********************
* WORKING WITH DATA *
********************/
}, // _onSingleClickAction
_onDblClickAction: function (event) {
var row = this.row(event), // dgrid/Grid methods
cell = this.cell(event);
/********************
* WORKING WITH DATA *
********************/
}, // _onDblClickAction
postCreate: function () {
this.inherited(arguments);
this.on(".dgrid-content .dgrid-row:dblclick", lang.hitch(this, "_onDblClickAction"));
this.on(".dgrid-content .dgrid-row:click", lang.hitch(this, "_onSingleClickAction"));
} // postCreate
}); // declare
}); // define最后类别定义:
define([
"dojo/_base/declare",
"dojo/_base/lang", // hitch
"dgrid/OnDemandGrid"
], function (declare, lang, OnDemandGrid){
return declare(OnDemandGrid, {
onDblClick: function (row) { // empty method for definition in childs
console.log(row.id); // record id from the store
console.log(row.data); // full object from the store
console.log(row.element); // DOM element
},
_onDblClick: function (event) { // private method
this.onDblClick(this.row(event)); // extract data from event
}, // _onDblClick
postCreate: function () {
this.inherited(arguments);
this.on(".dgrid-content .dgrid-row:dblclick", lang.hitch(this, "_onDblClick"));
} // postCreate
}); // declare
}); // definehttps://stackoverflow.com/questions/31997834
复制相似问题