Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 禁用=true后如何重新启用jQuery工具提示?_Javascript_Jquery_Jquery Ui Tooltip - Fatal编程技术网

Javascript 禁用=true后如何重新启用jQuery工具提示?

Javascript 禁用=true后如何重新启用jQuery工具提示?,javascript,jquery,jquery-ui-tooltip,Javascript,Jquery,Jquery Ui Tooltip,正在尝试暂时禁用jQuery工具提示 $(document).tooltip( "option", "disabled", true ); 当我再次尝试重新启用它们时,所有的title属性都消失了。我试图使用以下方法重新启用它们: $(document).tooltip( "option", "disabled", false); 当我第一次将属性设置为禁用时,标题属性实际上已被完全删除 还尝试: $(document).tooltip("disable"); $(document).too

正在尝试暂时禁用jQuery工具提示

$(document).tooltip( "option", "disabled", true );
当我再次尝试重新启用它们时,所有的
title
属性都消失了。我试图使用以下方法重新启用它们:

$(document).tooltip( "option", "disabled", false);
当我第一次将
属性设置为禁用时,
标题
属性实际上已被完全删除

还尝试:

$(document).tooltip("disable");
$(document).tooltip("enable");
它正在做同样的事情

更新


在Jasen和zgr024的帮助下找到了我自己问题的解决方案。请参阅。

这似乎是jquery版本的一个bug,因此在禁用工具提示后,您需要一个变通方法来插入title属性

在需要重新启用的工具提示元素上使用类名,或使用
[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", "");
});

工作示例:

在上面其他人的帮助下,我终于找到了更好的解决方案。不需要对每个元素重新添加
title
进行残酷的修复。别误会我的意思,该修复程序会起作用,但性能很重要(尤其是我仍然需要支持IE8)

基本上,我向工具提示对象添加了一个自定义变量,这也可以是一个全局变量。因为在js中,一切都是一个
对象
,所以您可以向其中添加任何您想要的内容

$(document).tooltip.temporarilyOff
然后,当我初始化jQuery工具提示时,我只需要在打开的
中添加一个检查:

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");  

我进行了验证,当您重新启用工具提示时,此方法有助于覆盖默认值

。。这在jquery v2.1.0和ui v1.11中不再适用。您使用的库的版本是什么?这看起来像是一个bug.jQuery v1.11.1 jQuery UI-v1.11.0看起来我用第一个示例重现了相同的问题。我切换到使用外部源代码
http://code.jquery.com/jquery-1.11.1.js
http://code.jquery.com/ui/1.11.0/jquery-ui.js
。最初它是有效的,但一旦我点击disable,我就会遇到同样的问题。
title
属性也将从元素中删除。您需要重新添加title属性,因为禁用的标志正在使用removeAttr(“title”)。。。尝试在禁用之前将其设置为变量,以便可以将其添加回。。。但是,是的,这有点愚蠢。有没有办法访问/修改全局jquery.ui.tooltip对象?我想动态修改
open
。您可以使用
.tooltip({open:function(e,ui){}})
然后指定要运行的函数。如果你需要更多的帮助,你应该提出一个新问题。这很酷,这是新问题吗?我不记得几年前有过这个功能呵呵。。。谢谢你的提示!
$(document).tooltip("disable").tooltip("hide"); 

$(document).tooltip("enable").tooltip("show");