Javascript 在动态创建的DHTMLX网格上附加rowSelect事件
我正在使用DHTMLX网格,我正在使用如下方法构造多个网格对象 JS:Javascript 在动态创建的DHTMLX网格上附加rowSelect事件,javascript,jquery,dhtmlx,Javascript,Jquery,Dhtmlx,我正在使用DHTMLX网格,我正在使用如下方法构造多个网格对象 JS: function renderGrid(render_area, dataURL, skin, loop_index) { var scope = this; var grid_obj = loop_index + '_grid'; grid_obj = new dhtmlXGridObject($(render_area).attr('id')); grid_obj.selMultiRows
function renderGrid(render_area, dataURL, skin, loop_index) {
var scope = this;
var grid_obj = loop_index + '_grid';
grid_obj = new dhtmlXGridObject($(render_area).attr('id'));
grid_obj.selMultiRows = true;
grid_obj.imgURL = "codebase/imgs/";
grid_obj.init();
grid_obj.setSkin(skin);
grid_obj.load(dataURL);
}
我使用jquery插件来完成这项工作。现在我想将“RowSelect”事件附加到所有这些动态创建的网格中
我想在HTML页面上使用grid对象并像这样附加事件
0_grid.attachEvent(“onRowSelect”,scope.clickEvent)代码>
但不幸的是,我无法在HTML页面上获取这些动态创建的网格对象(0_网格在HTML页面上未定义)
如果有人能给我推荐一些好的解决方案,我很高兴。你可以用它来将事件附加到动态创建的元素上。您需要将事件附加到作为网格元素父元素的静态元素
parent.on("event", "selector", "data", handler());
您有两个选项,可以在renderGrid
内或外部附加侦听器。我删除了loop\u index
参数,因为您不需要它:
在:
function renderGrid(render_area, dataURL, skin) {
var grid_obj = new dhtmlXGridObject($(render_area).attr('id'));
grid_obj.selMultiRows = true;
grid_obj.imgURL = 'codebase/imgs/';
grid_obj.init();
grid_obj.setSkin(skin);
grid_obj.load(dataURL);
grid.attachEvent('onRowSelect', function () {
// Or instead of an anonymous function you could use this.clickEvent
});
}
外部(需要从renderGrid
返回网格对象):
function renderGrid(render_area, dataURL, skin) {
var grid_obj = new dhtmlXGridObject($(render_area).attr('id'));
grid_obj.selMultiRows = true;
grid_obj.imgURL = 'codebase/imgs/';
grid_obj.init();
grid_obj.setSkin(skin);
grid_obj.load(dataURL);
return grid_obj;
}
var grid = renderGrid($('#grid'), '/data.xml', 'dhx_skyblue');
grid.attachEvent('onRowSelect', function () {
// Or instead of an anonymous function you could use this.clickEvent
});
如果您想在循环中附加事件侦听器,我建议您首先阅读JavaScript Garden中的段落。thanx以获得回复。但此处理程序将是静态处理程序。实际上,网格允许基于数据行id的处理程序。因此,使用上述选项,我将无法执行所需的操作。只需添加到renderGr即可id函数线网格对象attachEvent(“onRowSelect”,scope.clickEvent);您不需要名称来附加事件,只需附加您已经拥有的对象即可