Javascript 禁用动画以过滤KendoGrid中的列

Javascript 禁用动画以过滤KendoGrid中的列,javascript,jquery,asp.net-mvc,kendo-ui,kendo-grid,Javascript,Jquery,Asp.net Mvc,Kendo Ui,Kendo Grid,当我使用KendoUI开发我的应用程序时,我在我的应用程序中使用了多个网格。我的问题是,我想禁用“过滤器动画”选项,当我们单击过滤器的每一列时,菜单会向下滑动,为我们提供各种过滤器选项。 我想在单击该列进行过滤时禁用动画,该选项不得向下滑动。在这里我添加了一个图像。我认为没有“官方”的配置选项。 您可以对所有弹出窗口禁用它,如下所示: kendo.ui.Popup.fn.options.animation.open.duration = 0; kendo.ui.Popup.fn.options.

当我使用KendoUI开发我的应用程序时,我在我的应用程序中使用了多个网格。我的问题是,我想禁用“过滤器动画”选项,当我们单击过滤器的每一列时,菜单会向下滑动,为我们提供各种过滤器选项。 我想在单击该列进行过滤时禁用动画,该选项不得向下滑动。在这里我添加了一个图像。

我认为没有“官方”的配置选项。 您可以对所有弹出窗口禁用它,如下所示:

kendo.ui.Popup.fn.options.animation.open.duration = 0;
kendo.ui.Popup.fn.options.animation.close.duration = 0;
$(".k-grid-header").find("th").each(function () {
    var menu = $(this).data("kendoFilterMenu");
    var init = menu._init;
    menu._init = function () {
        init.apply(this, arguments);
        this.popup.options.animation.open.duration = 0;
        this.popup.options.animation.close.duration = 0;
    };
});
()

请注意,这也会影响其他小部件(例如过滤器菜单中的下拉菜单),因此如果需要,可能需要显式设置动画配置。 另一种方法是为所有过滤器菜单设置动画(每列一个),例如:

kendo.ui.Popup.fn.options.animation.open.duration = 0;
kendo.ui.Popup.fn.options.animation.close.duration = 0;
$(".k-grid-header").find("th").each(function () {
    var menu = $(this).data("kendoFilterMenu");
    var init = menu._init;
    menu._init = function () {
        init.apply(this, arguments);
        this.popup.options.animation.open.duration = 0;
        this.popup.options.animation.close.duration = 0;
    };
});

()

上面的答案对我很有用,但是对于我们如何使用剑道网格,网格的列菜单会显示另一个子菜单(如图所示)。结果表明,虽然最初的下拉菜单是剑道类型的“弹出”,但子菜单是剑道类型的“菜单”。因此,如果您还希望子菜单没有动画,则可以添加以下行:

kendo.ui.Menu.fn.options.animation.open.duration = 0;
kendo.ui.Menu.fn.options.animation.close.duration = 0;
或者,可以使用animation=false的缩写禁用动画,因此最终结果可能是:

kendo.ui.Popup.fn.options.animation = false;
kendo.ui.Menu.fn.options.animation = false;
再次注意,这将关闭所有弹出窗口和菜单的动画