8

我打开了 Kendo UI 模式窗口,我想通过单击覆盖来关闭它。我怎样才能做到这一点?

4

4 回答 4

14

尝试这样的事情:

var dialog = $("#dialog2").kendoWindow({
    modal: true
}).data("kendoWindow").center();

$(document).on("click", ".k-overlay", function () {
    dialog.close();
});

演示

于 2014-01-14T10:22:48.257 回答
8

如果您想将其应用于所有剑道窗口,而不必让包含实例的变量方便,您可以这样做:

    $(document).on('click', '.k-overlay', function () {
        var kendoWindow = $('.k-window-content.k-content', $(this).next('div.k-widget.k-window'));
        if (kendoWindow == null || kendoWindow.length == 0) {
            return;
        }
        kendoWindow.data('kendoWindow').close();
    });
于 2015-01-15T17:29:40.790 回答
2

以前的答案对我不起作用。显然,较新版本的剑道直到激活窗口后才会生成覆盖。所以添加点击事件失败,因为在 DOM 中找不到 .k-overlay 类。解决方案是在窗口完成动画后添加事件。我使用 jQuery 添加事件侦听器,因为 kendo 使用 jQuery。

var myWindow = $('#myWindow').kendoWindow({
    width: "310px",
    actions: [],
    visible: false,
    modal: true,
    title: "This is my title",
    activate: function() {
        // Close window when clicked outside of window
        $(".k-overlay").on("click",
            function() {
                myWindow.close();
            });
    }
}).data("kendoWindow");
于 2020-02-28T20:47:31.147 回答
0

要在最新版本的剑道使用中申请所有窗口,如下所示,

$(document).on('click', '.k-overlay', function () {
    var kendoWindow = $(this).next('div.k-widget.k-window').find('.k-window-content');
    if (kendoWindow == null || kendoWindow.length == 0) {
        return;
    }
    kendoWindow.data('kendoWindow').close();
});
于 2021-09-29T03:31:42.207 回答