我自己也遇到了这个问题,这里的其他答案并没有真正涵盖 OP 询问的问题(我遇到的同样的问题):how to get the jQueryUI Tooltip to modify it's content when changed the "title" attribute of具有工具提示的项目。我有一个没有“标题”属性的输入,正在通过 AJAX 针对服务器进行验证,如果无效,我正在更改 CSS 类并添加一个“标题”来指示错误,并依靠 jQuery UI 的工具提示来“只是工作”。
我已经根据 JQUI 文档设置了工具提示,$(document).tooltip()
用于获取默认的委托行为(它为每个具有“标题”属性的已启用项目显示一个工具提示)。然后,当我使用 ajax 验证时$("#inputid").attr("title", "validation error");
,一切都很可爱,当我的输入悬停时,我的任何错误消息都显示为工具提示。
然而,在用户更正输入值后删除“title”属性,通过调用$("#inputid").removeAttr("title");
被证明是麻烦的 - 因为“title”属性会神秘地重新出现,以及工具提示。
经过一番挖掘,我发现这是因为工具提示小部件将“标题”属性存储在另一个地方(使用.data("ui-tooltip-content"...)
)以禁用浏览器的实际工具提示,然后将其恢复(这就是为什么“标题”属性神秘地重新 -出现。
因此,对 OP 问题的“正确”(或者可能是最简单的)答案是在更改(或删除)“title”属性之前暂时禁用 jQueryUI 的工具提示功能,然后重新启用它,让它重新检查内容并做正确的事。所以是这样的:
// first, disable tooltips
$(document).tooltip("disable");
// Make your change to the element's title
$("#inputid").attr("title", "new message");
or ...
$("#inputid").removeAttr("title");
// re-enable tooltips
$(document).tooltip("enable");
这里的所有都是它的!如上所述使用的问题.tooltip("option", "content", "some text")
是,您需要手动定义要显示的每个工具提示 - 如果您只想让工具提示与页面内容“正常工作”,那么肯定会进行大量不必要的编码。