4

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

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();
});

有没有更有效/更有效的方法来做到这一点?

4

1 回答 1

1

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

App.Utils.Tooltip = {
  triggerAll: function(element) {
    element.tooltip('show');
  },
  destroyAll: function() {
    $('[rel=tooltip]').tooltip('destroy');
  }
};
于 2013-10-01T15:15:05.517 回答