我遇到了普通工具提示的同样问题。在iPhone上,当单击页面的其他位置时,它们不会消失。
我的解决方案是,当你单击提示本身时,它会隐藏。在我看来,这应该被集成在bootstrap分发中,因为它只有很少的代码却有很大的效果。
当你可以访问bootstrap源代码时,请添加:
this.tip().click($.proxy(this.hide, this))
在文件tooltip.js中,方法Tooltip.prototype.init的最后一行是:
Tooltip.prototype.init = function (type, element, options) {
this.enabled = true
this.type = type
this.$element = $(element)
this.options = this.getOptions(options)
var triggers = this.options.trigger.split(' ')
for (var i = triggers.length; i--;) {
var trigger = triggers[i]
if (trigger == 'click') {
this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
} else if (trigger != 'manual') {
var eventIn = trigger == 'hover' ? 'mouseenter' : 'focus'
var eventOut = trigger == 'hover' ? 'mouseleave' : 'blur'
this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
}
}
this.options.selector ?
(this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
this.fixTitle()
this.tip().click($.proxy(this.hide, this))
}
如果您手头没有源代码,可以通过以下方式达到相同的效果:
$(function()
{
var hasTooltip = $("[data-toggle='tooltip']").tooltip();
hasTooltip.each(function()
{
var $tooltip = $(this).data('bs.tooltip');
$tooltip.tip().click($.proxy($tooltip.hide, $tooltip))
}
);
});
对我而言,在iPhone上获得良好的用户体验意味着:点击元素以查看工具提示,再次点击工具提示即可关闭。