在工具提示外单击时阻止 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
});
我知道有人要求 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
});