在工具提示外单击时阻止 kendo 工具提示 hide/close?

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

我知道有人要求 kendo 阻止 kendo 工具提示在我们点击工具提示外时 close/hide。他们建议 here 但似乎尚未实施。

到目前为止,当我们在 kendo 工具提示外单击时,我找不到 closes/hides 的方法。我只发现当我们点击 kendo 工具提示上的关闭或取消按钮时触发的事件。但是有什么 way/hackish 方法可以使用 javascript/jquery/anything 来实现吗?

就像您在 link 中看到的那样,您在以下情况下隐藏了 kendo 工具提示(带有 autoHide: false 属性):

  • 在工具提示外单击
  • 滚动页面
  • 按 Esc

直到 Telerik 不会实现阻止它的功能,唯一的方法是使用 jquery event.stopImmediatePropagation()。例如,当您在外部单击时从隐藏中阻止 tootlip,您可以这样写:

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

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

不幸的是,它将阻止 any html onmousedown 事件,如 DropDownLists/ComboBoxes 隐藏等

您可以覆盖 kendo UI 弹出窗口 class 的关闭功能以防止执行。我的解决方案是在 '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
});