【问题标题】:Bootstrap tooltip is not working after filtering with ajax in Rails 4在 Rails 4 中使用 ajax 过滤后,引导工具提示不起作用
【发布时间】:2015-12-29 13:57:41
【问题描述】:

我有一个索引页面,其中显示了foo 的多个对象,并将过滤器功能与 gem ransack 和这个 ajax 脚本集成:

$('#foo_search input').change(function(){
    $.get($('#foos_search').attr('action'), $('#foos_search').serialize(), null, "script");
    return false;
});

目前运行良好。之后,我在索引页面上显示的每个foo 上添加了一个工具提示,带有bootstrap。 JS 代码如下所示:

$('[data-toggle="tooltip"]').tooltip();

索引页面看起来像这样:

//index.html.erb
<div id="foos">
  <%= render 'foos' %>
</div>

//_foos.html.erb
<% @foos.each do |f| %>
  <div class="btn btn-default">
    <span data-toggle="tooltip" data-html="true" data-placement="top" title="<% f.details.each do |d| %><li><%= d.name %></li><% end %>">
      DETAILS
    </span>
  </div>
<% end %>

正如您所见,每个foo 都有一堆details,所有详细信息都应该显示在工具提示中。在我使用过滤器之前效果很好。一旦我用 ransack 过滤 foos,JS 就会停止工作,并且在我重新加载页面之前不会显示任何工具提示。

对此有什么想法吗?

编辑: 我在heroku上上传了当前版本,所以也许你可以在那里看看。既然是德语,我会告诉你如何解决这个问题: 你会在亮黄色的jumbtron 中看到foo 对象,例如,如果你将鼠标悬停在“Geeignet für”上,你会看到一个工具提示弹出。但是,一旦您使用左侧的过滤器功能,工具提示将不再起作用,而是会显示一些 html。

https://sheltered-escarpment-6887.herokuapp.com/list

编辑2: 这是在更改过滤器选项后重新加载部分:

//index.js.erb
$("#foos").html("<%= escape_javascript(render("foos")) %>");

编辑3: 非常感谢 cassioscabral 我想通了:

//index.js.erb
$("#houses").html("<%= escape_javascript(render("houses")) %>");
$('[data-toggle="tooltip"]').tooltip();

【问题讨论】:

    标签: ajax ruby-on-rails-4 twitter-bootstrap-3 tooltip ransack


    【解决方案1】:

    您应该再次调用方法$('[data-toggle="tooltip"]').tooltip();,以便它可以再次呈现工具提示。

    我无法弄清楚为什么您的过滤器会影响它。也许它会在搜索之后呈现(并添加新的 dom 元素)部分,并且由于该元素将在您最初的 .tooltip() 调用之后添加,因此再次调用将是正确的方法,因为它基本上是在说“将工具提示添加到所有元素这个data-toggle,包括新的

    【讨论】:

    • 好的,完全有道理。但是每次重新加载插件哪种方式会更好。我添加了 .js.erb 文件,该文件在使用过滤器后重新加载部分。我想在那里添加它是有意义的。
    • 我宁愿使用过滤器提交按钮将调用绑定到.tooltip()。单击过滤器时,您可以检查是否发生了仍处于活动状态的 Ajax 调用,等待此调用结束然后调用 .tooltip()
    • 正如您在我的代码中看到的那样,过滤器表单中的每次更改都会发生 ajax。我根本没有使用提交按钮。
    • 是的,没看到。您也可以在 $.get 上添加成功回调。但是绑定(对于每个成功的更改都应用 .tooltip())也适用于更改事件。
    猜你喜欢
    • 2015-12-03
    • 2013-11-26
    • 2013-11-06
    • 2013-08-24
    • 1970-01-01
    • 2014-01-18
    • 1970-01-01
    相关资源
    最近更新 更多