【发布时间】:2014-02-26 17:54:32
【问题描述】:
我正在使用自定义的 jquery UI 工具提示,效果很好。现在我有一个特定的元素,我想在工具提示显示之前有一个延迟。我正在使用 show: {delay : 1000} 作为选项,这也可以。我在 document.ready 函数中定义工具提示。
问题是,我找不到通过 setter 方法设置延迟选项的位置。每当我尝试这样做时,我都会收到一个错误“在初始化之前无法在工具提示上使用该方法”。我目前的解决方法是使用选项集重新定义这个元素的整个工具提示,这很难看。什么时候我可以在已定义的工具提示上实际使用 setter 方法?
编辑以添加示例代码:
$(document).ready(function () {
$('#selector1').tooltip({
tooltipClass: 'myTooltip',
content: function () {
return genCustomContent();
}
});
$('#selector1 #subElement').tooltip({
tooltipClass: 'myTooltip',
show: {delay : 1000},
content: function () {
return genCustomContent();
}
});
}
以上是我当前的变通代码的样子。我没有在其他任何地方明确调用工具提示,因为我认为没有必要这样做 - 还没有。现在我想要的选项的设置器应该如下所示:
$( "#selector1 #subElement" ).tooltip( "option", "show", {delay : 1000});
我尝试在 $(document).ready() 函数中的工具提示声明之后直接调用它,显然无济于事。我还尝试在其余代码中间的某个地方调用它,该代码在 $(document).ready() 运行后很好地执行。无论哪种方式,我都会收到错误消息。
【问题讨论】:
-
我认为您可以在希望工具提示花费更多时间出现的特定元素上运行超时。
-
您可以在拨打
$(selector).tooltip()后随时设置/更改延迟。您是否有示例代码可供查看以了解问题所在? -
如果使用委托语法,jQuery UI 工具提示会有些不同。使用委托语法时,您必须预先应用所有选项,但工具提示不会初始化,直到您将鼠标悬停在它上面。如果要将特定选项应用于特定选项,则必须将它们与其他工具提示分开初始化,通常使用两个不同的类。
-
我编辑了我的消息以添加我正在使用的代码示例。所以,作为对 Kevin B 贡献的回答 - 我是否让你说对了,只要我在某些时候不“手动”调用该工具提示以确保它被初始化,我实际上就不能使用 setter?
标签: javascript jquery jquery-ui jquery-ui-tooltip