使用pjax时销毁/隐藏twitter引导程序工具提示

时间:2013-01-16 16:05:04

标签: jquery ruby-on-rails dom twitter-bootstrap pjax

在Rails应用程序上使用pjax时,我遇到了一些twitter bootstrap工具提示not being removed from the DOM元素的问题。例如,当我使用工具提示鼠标悬停元素时,然后单击指向另一个页面的链接,工具提示将被冻结。我目前解除工具提示的解决方案如下:

App.Utils.Tooltip = {

  triggerAll: function(element) {
    if (element.data('tooltip-loaded') == true) { return; }
    element.data('tooltip-loaded', true).tooltip().trigger('mouseover');
  },

  destroyAll: function() {
    var tooltips = ($('[rel=tooltip]').get());

    $.each(tooltips, function() {
      $(this).tooltip('destroy');
     });
  }

};

$(document).on('mouseover', '[rel=tooltip]', function() {
  App.Utils.Tooltip.triggerAll($(this));
});

$(document).on('pjax:beforeSend', function() {
  App.Utils.Tooltip.destroyAll();
});

有更有效/更有效的方法吗?

1 个答案:

答案 0 :(得分:1)

工具提示插件阻止您将其实例化两次,因此无需检查您可以将代码简化为以下内容。

App.Utils.Tooltip = {
  triggerAll: function(element) {
    element.tooltip('show');
  },
  destroyAll: function() {
    $('[rel=tooltip]').tooltip('destroy');
  }
};