【问题标题】:setting up tooltips existing on the page and tooltips that get loaded later设置页面上现有的工具提示和稍后加载的工具提示
【发布时间】:2012-11-19 15:05:33
【问题描述】:

我有以下 CoffeeScript:

$ ->
  $("[rel='tooltip']").tooltip
    html: false
    delay: { show: 500, hide: 100 }
    placement: 'bottom'

这会在页面加载时设置Twitter Bootstrap tooltips。我的问题是我将 AJAX 链接加载到选项卡中,并且我需要在该 AJAX 加载的内容中设置工具提示。我认为解决方案是使用on,但我无法弄清楚要调用它的元素以及要使用的事件。我试过了:

$(document).on 'ready', "[rel='tooltip']", ->
  console.log 'setting up tooltips'

但控制台消息从未出现,所以这似乎不起作用。

我想要一段代码来设置加载时页面上的任何工具提示,以及将来出现的任何工具提示。

编辑: charlietfl's answer 做到了!在我的$ -> 回调之外,我放置了:

$(document).tooltip
  selector: "[rel='tooltip']"
  html: false
  delay: { show: 500, hide: 100 }
  placement: 'bottom'

现在我已经在页面中设置了工具提示,并且设置了出现在加载 AJAX 的选项卡中的新工具提示。

【问题讨论】:

    标签: javascript jquery events coffeescript


    【解决方案1】:

    Bootstrap 已经内置了委托方法。使用selector 选项来委托代码运行时不存在的未来元素:

    $(document).tooltip({
         selector: "[rel='tooltip']"
          /* other options*/
    })
    

    参考:http://twitter.github.com/bootstrap/javascript.html#tooltips

    【讨论】:

    • $(document)... 会起作用,但它是散弹枪方法。为了提高效率,如果可能的话,最好委托给更多的本地容器。
    【解决方案2】:

    您可以设置全局 ajax 事件处理程序,例如 ajaxSuccess():

    $(document).ajaxSuccess(function() {
        $("[rel='tooltip']").tooltip({ //... etc
    

    这将在每次新的 ajax 调用成功时运行回调并附加工具提示。

    【讨论】:

    • 我实际上有一个绑定到ajax:success 的函数当前:$('.tab-pane').on 'ajax:success', 'a[data-remote]', (e, data, status, xhr) ->。我不想在此处粘贴工具提示设置代码,因为那样我会在两个地方使用它:一次用于在文档加载时设置页面上的所有工具提示,另一次用于在 AJAX 加载的内容中设置工具提示。我希望有一段代码同时适用于两者。
    • @David,如果除了获取这些新链接之外还有 ajax 活动,这很简洁但效率低下。
    • @Beetroot-Beetroot 我同意,这是我想到的第一件事。 Charlietfl 的答案看起来更好。
    猜你喜欢
    • 1970-01-01
    • 2012-03-09
    • 1970-01-01
    • 1970-01-01
    • 2019-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多