jQuery UI 工具提示:点击工具提示本身关闭
jQuery UI Tooltip: Close on click on tooltip itself
我有一个带有 jQuery UI 工具提示的页面,该页面最初是打开的,但在 mouseout
事件时关闭。
现在,我希望工具提示在用户单击它本身后关闭,而不是在显示工具提示的元素上关闭(与此处的许多其他答案一样)。
作为可能的解决方案之一,我想我可以将 click
处理程序添加到工具提示的 div 并从那里关闭它。但是我找不到使用工具提示小部件 API 获取工具提示 div 或以其他方式附加处理程序的标准方法。
我采用上述方法是否正确?或者如何以不同的方式实现我所追求的目标?
JSFiddle 说明我现在有什么。
试试这个:
$(document).ready(function(){
$('.first')
.tooltip({ content: 'Click to close', position: { my: 'left center', at: 'right center' }, items: '*' })
.tooltip('open')
.on('mouseout focusout', function(event) {
event.stopImmediatePropagation();
})
// when the tooltip opens (you could also use 'tooltipcreate'), grab some properties and bind a 'click' event handler
.on('tooltipopen', function(e) {
var self = this, // this refers to the element that the tooltip is attached to
$tooltip = $('#' + this.getAttribute('aria-describedby')); // we can get a reference to the tooltip via the `aria-describedby` attribute
// bind a click handler to close the tooltip
$tooltip.on('click', function() {
$(self).tooltip('close');
});
});
});
试试这个:
$(document).ready(function(){
$('.first').on('mouseout focusout', function(event) {
event.stopImmediatePropagation()
})
.tooltip({ content: 'Click to close', position: { my: 'left center', at: 'right center' }, items: '*' }).tooltip('open');
$( "body" ).delegate( ".ui-tooltip", "click", function() {
$('.first').tooltip('close');
});
});
见fiddlehere
我找到了一个相对简单的解决方案,无需破解工具提示 API,方法是在工具提示的 open
事件中附加一个 click
处理程序并在那里关闭工具提示:
$('.first')
.tooltip({
content: 'Click to close',
position: { my: 'left center', at: 'right center' },
items: '*'
open: function (event, ui) {
var $element = $(event.target);
ui.tooltip.click(function () {
$element.tooltip('close');
});
},
})
.tooltip('open')
.on('mouseout focusout', function(event) {
event.stopImmediatePropagation();
});
基于 Alexes 的回答,如果你只想在点击时关闭 "X":
$(".t1").tooltip({
content: "<div><div class='tit'>Some super titlet</div> <div class='x'>x</div><div class='con'>Some content super super long</div></h1>",
disabled: true,
width:550,
tooltipClass: "myClass",
open: function (event, ui) {
var $element = $(event.target);
ui.tooltip.each(function () {
$("div.x",this).click(function () {
$element.tooltip('close');
});
});
},
}).on('mouseout focusout', function(event) {
event.stopImmediatePropagation();
});
$(".tooltip").click(function() {
$(this)
.tooltip("open")
});
我有一个带有 jQuery UI 工具提示的页面,该页面最初是打开的,但在 mouseout
事件时关闭。
现在,我希望工具提示在用户单击它本身后关闭,而不是在显示工具提示的元素上关闭(与此处的许多其他答案一样)。
作为可能的解决方案之一,我想我可以将 click
处理程序添加到工具提示的 div 并从那里关闭它。但是我找不到使用工具提示小部件 API 获取工具提示 div 或以其他方式附加处理程序的标准方法。
我采用上述方法是否正确?或者如何以不同的方式实现我所追求的目标?
JSFiddle 说明我现在有什么。
试试这个:
$(document).ready(function(){
$('.first')
.tooltip({ content: 'Click to close', position: { my: 'left center', at: 'right center' }, items: '*' })
.tooltip('open')
.on('mouseout focusout', function(event) {
event.stopImmediatePropagation();
})
// when the tooltip opens (you could also use 'tooltipcreate'), grab some properties and bind a 'click' event handler
.on('tooltipopen', function(e) {
var self = this, // this refers to the element that the tooltip is attached to
$tooltip = $('#' + this.getAttribute('aria-describedby')); // we can get a reference to the tooltip via the `aria-describedby` attribute
// bind a click handler to close the tooltip
$tooltip.on('click', function() {
$(self).tooltip('close');
});
});
});
试试这个:
$(document).ready(function(){
$('.first').on('mouseout focusout', function(event) {
event.stopImmediatePropagation()
})
.tooltip({ content: 'Click to close', position: { my: 'left center', at: 'right center' }, items: '*' }).tooltip('open');
$( "body" ).delegate( ".ui-tooltip", "click", function() {
$('.first').tooltip('close');
});
});
见fiddlehere
我找到了一个相对简单的解决方案,无需破解工具提示 API,方法是在工具提示的 open
事件中附加一个 click
处理程序并在那里关闭工具提示:
$('.first')
.tooltip({
content: 'Click to close',
position: { my: 'left center', at: 'right center' },
items: '*'
open: function (event, ui) {
var $element = $(event.target);
ui.tooltip.click(function () {
$element.tooltip('close');
});
},
})
.tooltip('open')
.on('mouseout focusout', function(event) {
event.stopImmediatePropagation();
});
基于 Alexes 的回答,如果你只想在点击时关闭 "X":
$(".t1").tooltip({
content: "<div><div class='tit'>Some super titlet</div> <div class='x'>x</div><div class='con'>Some content super super long</div></h1>",
disabled: true,
width:550,
tooltipClass: "myClass",
open: function (event, ui) {
var $element = $(event.target);
ui.tooltip.each(function () {
$("div.x",this).click(function () {
$element.tooltip('close');
});
});
},
}).on('mouseout focusout', function(event) {
event.stopImmediatePropagation();
});
$(".tooltip").click(function() {
$(this)
.tooltip("open")
});