与我的其他评论相关,我查看了原始代码并通过扩展小部件并添加版本 JQuery-UI v1.10.3 的 autoHide 选项来实现手动打开/关闭。基本上我只是删除了在 _create 和内部 _open 调用中添加的鼠标侦听器。
编辑: 按照@MscG 的建议,将 autoHide 和 autoShow 分隔为两个单独的标志
在这里演示:
http://jsfiddle.net/BfSz3/
(function( $ ) {
$.widget( "custom.tooltipX", $.ui.tooltip, {
options: {
autoHide:true,
autoShow: true
},
_create: function() {
this._super();
if(!this.options.autoShow){
this._off(this.element, "mouseover focusin");
}
},
_open: function( event, target, content ) {
this._superApply(arguments);
if(!this.options.autoHide){
this._off(target, "mouseleave focusout");
}
}
});
}( jQuery ) );
现在,当您初始化时,您可以通过设置 autoHide 将工具提示设置为手动显示或隐藏:false:
$(someDOM).tooltipX({ autoHide:false });
并且只需根据其他地方的需要直接在您的代码中执行标准的打开/关闭调用
$(someDOM).tooltipX("open"); // displays tooltip
$(someDOM).tooltipX("close"); // closes tooltip
一个简单的修补程序,直到我有时间做正式的拉取请求,这将不得不做。