使用 twitter bootstrap 创建工具提示/弹出框后的回调函数?

IT技术 javascript jquery twitter-bootstrap
2021-02-23 20:32:30

我想在使用 twitter bootstrap 创建工具提示或弹出窗口后对其进行操作。据我所知,没有构建方法可以做到这一点。

$('#selector').popover({
  placement: 'bottom'
});

例如,假设我想将创建的工具提示从计算位置向上移动 5px 并向左移动 5px。关于做到这一点的最佳方法的任何想法?

这就是我想做的:

$('#selector').popover({
  placement: 'bottom',
  callback: function(){
    alert('Awesome');
  }
});
4个回答

适用于工具提示:

var tmp = $.fn.tooltip.Constructor.prototype.show;
$.fn.tooltip.Constructor.prototype.show = function () {
  tmp.call(this);
  if (this.options.callback) {
    this.options.callback();
  }
}

this.$('#selector').tooltip({ 
  placement: 'top', 
  callback: function() { 
    alert('hello') 
  } 
});
@marquez,请将此解决方案添加到自己的答案中,以便轻松找到,因为这是问题的解决方案。
2021-04-23 20:32:30
可能看起来很傻,但对我来说如何让它与 popover 一起工作并不明显。对于那些也可能遇到这个小挑战的人,方法如下: var tmp = $.fn.popover.Constructor.prototype.show; $.fn.popover.Constructor.prototype.show = function () { tmp.call(this); if (this.options.callback) { this.options.callback(); } };
2021-05-05 20:32:30
有谁知道哪一种原型方法用于取消?github.com/twbs/bootstrap/blob/v2.3.2/js/bootstrap-tooltip.js
2021-05-07 20:32:30

也许在给出之前的答案时这不可用,但截至 2016 年,您可以将事件附加到弹出窗口(功能上等同于回调)。

例如

$('#myPopover').on('shown.bs.popover', function () {
  // do something…
})

活动包括:

  • show.bs.popover
  • 显示.bs.popover
  • 隐藏.bs.popover
  • 隐藏.bs.popover
  • 插入.bs.popover

参考引导文档

最佳答案,因为这现在是 Bootstrap 本身提供的功能!
2021-04-27 20:32:30

发布此答案只是为了澄清 Crafter 的要求,并包含 Marquez 评论中的代码。

首先你扩展 Bootstrap 的 popover 来处理一个callback选项。

var tmp = $.fn.popover.Constructor.prototype.show;
$.fn.popover.Constructor.prototype.show = function() {
    tmp.call(this); if (this.options.callback) {
        this.options.callback();
    }
}

然后您将一个callback属性添加到您的选项对象并为其分配一个匿名函数。

$('#popover-foo').popover({
    content: 'Hello world',
    callback: function () {
        alert('Hello');
    }
});

其他解决方法:

  1. 使用 show.bs.popover 或 shown.bs.popover 侦听器
  2. 在回调中,'shown' 事件数据链接到包含弹出框 ID 的目标,从这里你可以做剩下的事情

    $('body')
    .popover(options)
    .on('shown.bs.popover', function(shownEvent) {
            update_popover_data(shownEvent);
    });
    

回调函数:

    function update_popover_data(shownEvent) {
         var id = $(shownEvent.target).attr('aria-describedby');
         $('#'+id).html('Your New Popover Content');
    }