0

再会,

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

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

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

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

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

PS文档中现有的剑道网格事件都不能满足我的需要,甚至数据源“requestEnd”也不能,因为在那一刻,网格的HTML还没有在页面中生成。如果存在像“postRender”或类似的事件,那将是理想的。

4

2 回答 2

0

检测“渲染”很困难。Firefox 有一个MozAfterPaint事件,但它不是标准的,我不知道您将如何确保它仅针对您的特定事件触发。

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

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

于 2013-04-04T11:21:00.987 回答
0

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

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

阅读更多:为什么 setTimeout(fn, 0) 有时有用?

于 2013-04-04T11:26:46.073 回答