Я работаю с сетью 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 и прикрепляя событие там, как это 0_grid.attachEvent("onRowSelect",scope.clickEvent);
но, к сожалению, я не могу получить эти динамически созданные объекты сетки на странице HTML (0_grid не определен на странице HTML).
Рад, если кто-нибудь может предложить мне хорошее решение
У вас есть 2 варианта, либо присоедините слушателя в renderGrid
либо за его пределами. Я удалил параметр loop_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.
Вы можете использовать метод jquery.on для присоединения событий к динамически созданным элементам. Вам нужно будет привязать событие к статическому элементу, который является родительским элементом ваших элементов сетки.
parent.on("event", "selector", "data", handler());