尝试暂时禁用jQuery工具提示
$(document).tooltip( "option", "disabled", true );
当我尝试再次重新启用它们时,所有title
属性都消失了。我试图使用以下方法重新启用它们:
$(document).tooltip( "option", "disabled", false);
当我第一次将title
属性设置为disabled
到true
时,$(document).tooltip("disable");
$(document).tooltip("enable");
属性实际上已被完全删除。
也尝试过:
{{1}}
它正在做同样的事情......
更新
在Jasen和zgr024的帮助下找到了我自己的问题的解决方案。请参阅below。
答案 0 :(得分:5)
这似乎是jquery版本的一个错误,因此您需要在解除工具提示后插入标题属性。
在需要重新启用的工具提示元素上使用类名,或使用[title]
属性选择器。
<input type="text" class="tooltip-hack" title="tooltip text" />
$("#disable").on("click", function (e) {
var tooltips = $("[title]"); // or $(".tooltip-hack")
$(document).tooltip("disable");
tooltips.attr("title", "");
});
根据您的html结构使用两者中破坏性最小的。
另外,您注意到所有标题属性都已删除,因此您可以更有选择性地使用工具提示。
// instead of
$(document).tooltip();
// use a more restrictive selector
$(".tooltip-hack").tooltip();
工作示例:jsFiddle
答案 1 :(得分:5)
所以在上面的其他人的帮助下,我终于找到了更好的解决方案。这不需要残酷的修复来重新添加title
到每个元素。不要误解我的意思,修复工作会有效,但性能很重要(特别是我仍然需要支持IE8)。
基本上我将自定义变量添加到工具提示对象,这也可以是全局变量。由于js中的所有内容都是Object
,因此您只需添加任何内容即可。
$(document).tooltip.temporarilyOff
然后当我初始化jQuery工具提示时,我只需要在open
中添加一个检查:
var settings = {};
settings.tooltipClass = "tooltip";
settings.open = function (event, ui) {
if ($(document).tooltip.temporarilyOff) {
ui.tooltip.stop().remove();
}
};
$(document).tooltip(settings);
然后,当我需要暂时禁用jQuery工具提示时,我只需要在任何我想要的地方切换标志。像这样:
$(document).tooltip.temporarilyOff = true;
在此之后的任何事情,工具提示都不会被触发,并且所有元素都将保留其title
属性。当我完成了我正在做的事情时,我只需要将标志设置回false
并且工具提示将像以前一样工作。
我可以把它变成jQuery插件,以便更容易调用,也可以隐藏稍微丑陋的变量名......但无论如何都是这个想法。我认为这是一个更好的解决方案,因为它不会强制jQuery删除title
属性,然后再将其添加回两次无用的工作。
以下是来自@Jasen原创jsFiddle的updated example:
答案 2 :(得分:0)
Codenamezero是在jQuery / js中扩展对象的一个很好的例子,但你可以开箱即用:
$(document).tooltip("disable").tooltip("hide");
$(document).tooltip("enable").tooltip("show");
我已经验证了此方法可用于覆盖默认值