所以,在上面其他人的帮助下,我终于找到了一个更好的解决方案。它不需要对每个元素重新添加
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中fork过来的
更新示例。
.attr("title", "")
插入元素中。您甚至不需要知道原始标题值——只需要裸露的title
属性即可工作。请参阅http://jsfiddle.net/xMxqg/3/。 - Jasen$(".stupid-tooltips").attr("title", "")
。 - Jasen