Javascript 剑道网格事件不适用于代理
我有一个页面,可以在任何时候创建几个网格。我试图通过为Javascript 剑道网格事件不适用于代理,javascript,jquery,kendo-ui,kendo-grid,Javascript,Jquery,Kendo Ui,Kendo Grid,我有一个页面,可以在任何时候创建几个网格。我试图通过为组或数据绑定事件添加一个委托来为所有这些事件设置一个事件处理程序,但它从未触发 我正在尝试这个 $(document).on('dataBound', 'div.k-grid', onGridDataBound); 在创建每个网格时,是否可以在不挂接每个网格的设置的情况下执行此操作,或者不必为每个网格绑定事件?检查。唯一的区别是,在您的例子中,有多个网格。因为我会做一些类似的事情: var grids = $('div.k-grid');
组
或数据绑定
事件添加一个委托来为所有这些事件设置一个事件处理程序,但它从未触发
我正在尝试这个
$(document).on('dataBound', 'div.k-grid', onGridDataBound);
在创建每个网格时,是否可以在不挂接每个网格的设置的情况下执行此操作,或者不必为每个网格绑定事件?检查。唯一的区别是,在您的例子中,有多个网格。因为我会做一些类似的事情:
var grids = $('div.k-grid');
grids.each(function(e) {
var grid = $(this).data('kendoGrid');
grid.bind("dataBound", function () {
alert('Databounded');
});
});
所以我最终做了一些非常低效的事情来完成这件事。因为只有默认的浏览器事件似乎被委派,我最后在任何网格头上添加了一个
mousedown
的活页夹。然后,它的处理程序将绑定到该网格的组
事件,从那时起,它就保证位于页面上
var boundGrids = [];
function onGridGroup(e) {
//Grid group code
};
function onGridHeaderClick(e) {
var grid = $(this).closest('.k-grid').data('kendoGrid');
if (!grid._attachedGroup) {
grid._attachedGroup = true;
boundGrids.push(grid);
grid.bind('group', onGridGroup);
}
};
$(document).on('mousedown', '.k-grid th a.k-link', onGridHeaderClick);
我可以向您推荐两种选择:
function onGridDataBound(e) {
alert(e.sender.wrapper.attr("id") + " was databound");
}
kendo.ui.Grid.fn.options.dataBound = onGridDataBound;
html{字体大小:14px;字体系列:Arial、Helvetica、sans serif;}
网格1
网格2
函数onGridDataBound(e){
警报(e.sender.wrapper.attr(“id”)+“已被数据绑定”);
}
$(函数(){
kendo.ui.Grid.fn.options.dataBound=ongridatabound;
变量gridOptions={
数据源:{
类型:“odata”,
运输:{
阅读:“https://demos.telerik.com/kendo-ui/service/Northwind.svc/Orders"
},
页面大小:5,
对,,
是的,
服务器排序:true
},
身高:200,
pageable:对,
栏目:[{
字段:“订单ID”,
可过滤:false
}, {
字段:“ShipName”,
标题:“船名”
}, {
字段:“ShipCity”,
标题:“船舶城”
}]
};
$(“#grid1”).kendoGrid(gridOptions);
$(“#grid2”).kendoGrid(gridOptions);
});
我想为尚未在页面上的网格委派此事件。网格将在用户导航时创建,具体取决于用户单击的内容。这是行不通的。我最终做了一些完全不同的黑客行为来完成这项工作,但我确实喜欢为需要这种行为的屏幕创建我自己的小部件的想法。我将Durandal与ko一起使用,因此我需要替换默认的剑道绑定,但这应该不会太难。