Javascript 在动态创建的DHTMLX网格上附加rowSelect事件

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

我正在使用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 = 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);您不需要名称来附加事件,只需附加您已经拥有的对象即可