防止在工具提示外部单击时隐藏/关闭剑道工具提示

Prevent kendo tooltip hide/close when clicking outside the tooltip?

本文关键字:工具提示 隐藏 外部 单击      更新时间:2023-09-26

我知道有人要求剑道防止每当我们在工具提示外部单击时关闭/隐藏剑道工具提示。他们在这里建议它,但似乎尚未实施。

到目前为止,我找不到当我们单击剑道工具提示之外时关闭/隐藏的方法。我只发现当我们单击剑道工具提示上的关闭或取消按钮时触发的事件。但是有什么方法/黑客方法可以使用javascript/jquery/任何东西来实现这一点吗?

就像您在链接中看到的那样,当您执行以下操作时,您包含剑道工具提示(带有autoHide: false属性)会隐藏:

  • 在工具提示外部单击
  • 滚动页面
  • 命中电调

在 Telerik 不会实现阻止它的功能之前,唯一的方法是使用 jquery event.stopImmediatePropagation() 。例如,当您单击外部时,为了阻止隐藏的tootlip,您可以编写:

$("#target").kendoTooltip({
    autoHide: false
});
$('html').on('mousedown', function(e){
    e.stopImmediatePropagation();
});

工作演示:http://dojo.telerik.com/ugUCI

不幸的是,它将阻止任何html鼠标向下事件,如DropDownLists/ComboBoxes隐藏等。

您可以覆盖剑道 UI 弹出类的关闭功能以防止执行。我的解决方案是在"hide"处理程序中抛出一个自定义异常,并在捕获此自定义异常时防止关闭发生。

kendo.ui.Popup.fn.close = function (close) {
    return function (skipeffects) {
        try {
            close.call(this, skipeffects);
        } catch (err) {
            // suppress error if its the right type
            if (!(err instanceof PreventTooltipHideException)) {
                throw err;
            }
        }
    }
}(kendo.ui.Popup.fn.close);

var tooltip = $('#' + areaId).kendoTooltip({
    content: "Hello World!",
    hide: function (e) {
         throw new PreventTooltipHideException();
    },
    autoHide: false
});