我自己也遇到了这个问题,其他答案没有真正涵盖OP所问的问题(也是我所遇到的同样问题):如何让jQueryUI Tooltip在更改具有工具提示的项目的“title”属性时修改其内容。 我有一个没有“title”属性的输入框,通过 AJAX 验证服务器验证,如果不有效,则更改 CSS 类并添加“title”以指示错误,并依赖于 jQuery UI 的 tooltip 来“正常工作”。
根据 JQUI 文档设置工具提示,使用
$(document).tooltip()
获取默认的委托行为(为具有“title”属性的每个启用的项目显示工具提示)。 然后,当我的 ajax 验证使用
$("#inputid").attr("title", "validation error");
时,一切都很愉快,当悬停在输入上时,我的错误消息出现为工具提示。
但是,通过调用
$("#inputid").removeAttr("title");
删除“title”属性在用户更正输入值后,证明是棘手的 - 因为“title”属性会神秘地重新出现,连同工具提示一起。
经过一点挖掘,我发现这是因为工具提示小部件将“title”属性存储在另一个位置(使用
.data("ui-tooltip-content"...)
)以禁用浏览器的实际工具提示,然后还原它(这就是为什么“title”属性会神秘地重新出现的原因。
因此,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")
的问题在于,您需要手动定义每个想要显示的工具提示 - 如果您只想让工具提示与页面内容“正常工作”,那么肯定会有很多不必要的编码。