试图暂时禁用jQuery工具提示
$(document).tooltip( "option", "disabled", true );
当我再次尝试重新启用它们时,所有的 title
属性消失了。我试图使用以下方法重新启用它们:
$(document).tooltip( "option", "disabled", false);
该 title
当我第一次将其设置为时,实际上会完全删除这些属性 disabled
至 true
。
还尝试过:
$(document).tooltip("disable");
$(document).tooltip("enable");
这是做同样的事情......
更新
在Jasen和zgr024的帮助下找到了我自己的问题的解决方案。看到 下面。
这似乎是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
所以在上面的其他人的帮助下,我终于找到了更好的解决方案。这不需要残酷的修复来重新添加 title
对每一个元素。不要误会我的意思,修复会起作用,但性能很重要(特别是我仍然需要支持IE8)。
基本上我将自定义变量添加到工具提示对象,这也可以是全局变量。因为一切都是 Object
在js中,你可以添加你想要的任何东西。
$(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分叉:
Codenamezero是在jQuery / js中扩展对象的一个很好的例子,但你可以开箱即用:
$(document).tooltip("disable").tooltip("hide");
$(document).tooltip("enable").tooltip("show");
我有验证这个方法可以用来覆盖默认值