有没有办法手动打开关闭jquery ui工具提示?我只是希望它对点击事件切换打开/关闭作出反应。您可以取消绑定所有鼠标事件,它会在调用.tooltip('open')时重新绑定它们,即使它不应该初始化或设置事件imo,因为如果您尝试在没有初始化的情况下运行.tooltip('open'),它会抱怨大声地没有被初始化。
答案 0 :(得分:12)
jltwoo,我可以建议使用两个不同的布尔开关来启用自动打开和自动关闭吗?通过此更改,您的代码将如下所示:
(function( $ ) {
$.widget( "custom.tooltipX", $.ui.tooltip, {
options: {
autoShow: true,
autoHide: 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 ) );
通过这种方式,将工具提示初始化为:
$(someDOM).tooltipX({ autoHide:false });
当鼠标悬停在元素上时,它会自动显示,但你必须手动关闭它。
如果要手动控制打开和关闭操作,只需使用:
$(someDOM).tooltipX({ autoShow:false, autoHide:false });
答案 1 :(得分:11)
如果您想解开事件并且不想制作自己的自定义工具提示。
$("#some-id").tooltip(tooltip_settings)
.on('mouseout focusout', function(event) {
event.stopImmediatePropagation();
});
$("#some-id").attr("title", "Message");
$("#some-id").tooltip("open");
mouseout 通过移动鼠标光标阻止tooltop消失
focusout 会阻止tooltop通过键盘导航消失
答案 2 :(得分:7)
工具提示有一个禁用选项。好吧,我用它,这是代码:
$('a').tooltip({
disabled: true
}).click(function(){
if($(this).tooltip('option', 'disabled'))
$(this).tooltip('option', {disabled: false}).tooltip('open');
else
$(this).tooltip('option', {disabled: true}).tooltip('close');
}).hover(function(){
$(this).tooltip('option', {disabled: true}).tooltip('close');
}, function(){
$(this).tooltip('option', {disabled: true}).tooltip('close');
});
答案 3 :(得分:5)
与我的其他评论相关,我查看了原始代码,并通过扩展窗口小部件并使用版本JQuery-UI v1.10.3添加autoHide选项来实现手动打开/关闭。基本上我只是删除了_create和内部_open调用中添加的鼠标监听器。
编辑:将自动隐藏和autoShow分隔为@MscG建议的两个单独标志
演示: 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
一个简单的修补程序,直到我有时间做官方拉取请求,这将是必须的。
答案 4 :(得分:0)
来自其他SO问题的一些汇编。
Example
在hint
点击显示工具提示,并在其他地方隐藏工具提示点击
$(document).on('click', '.hint', function(){ //init new tooltip on click
$(this).tooltip({
position: { my: 'left+15 center', at: 'center right' },
show: false,
hide: false
}).tooltip('open'); // show new tooltip
}).on('click', function(event){ // click everywhere
if(!$(event.target).hasClass('hint'))
$(".hint").each(function(){
var $element = $(this);
if($element.data('ui-tooltip')) { // remove tooltip only from initialized elements
$element.tooltip('destroy');
}
})
});
$('.hint').on('mouseout focusout', function(event) { // prevent auto hide tooltip
event.stopImmediatePropagation();
});