触发客户端控件呈现后触发的JavaScript事件

时间:2013-04-04 11:13:52

标签: javascript jquery kendo-ui kendo-grid

美好的一天,

我有一个网页,用户可以在下拉列表中进行选择。

选择下拉列表中的项目后,会出现一个Kendo网格,并显示通过返回JSON的API调用检索到的记录列表。

我编写的代码对网格显示时生成的html表进行了某些修改,但此代码是由按钮触发的。这不是我想要的行为。

我需要在网格渲染后以某种方式触发事件,以便代码自动执行而不是由按钮触发。

有可能通过JQuery我可以以某种方式将事件绑定到网格控件完成渲染后触发吗?

P.S。文档中现有的Kendo网格事件都不能满足我的需要,甚至数据源“requestEnd”都没有,因为在那个时刻,网格中的HTML尚未生成。像“postRender”这样的事件或类似事件将是理想的,如果存在的话。

2 个答案:

答案 0 :(得分:0)

检测'渲染'很难。 Firefox有一个MozAfterPaint事件,但它不是标准的,我不知道你怎么会确保它只针对你的特定事件而被解雇。

或者您可以尝试查看DOM Mutation事件,但它们也不受支持,并且在更改DOM和在浏览器UI中更新网格之间可能仍存在延迟。

您最好的选择是修改网格HTML以输出一些触发预定义回调的JS。

答案 1 :(得分:0)

当您的HTML内容呈现之前运行javascript时,请尝试使用setTimeout(function () {}, 0)“暂停”JavaScript执行以让渲染线程赶上来。所以你的电话看起来很像:

$("#grid").kendoGrid({
    dataBound: function(e) {
        setTimeout(function () {
            console.log("dataBound");
        }, 0);
    }
});

详细了解:Why is setTimeout(fn, 0) sometimes useful?