使用Rails动态打印时无法访问html id标记

时间:2014-08-31 01:58:52

标签: javascript html ruby-on-rails

我有以下代码:

<% @domains.each do |domain| %>
  <div id="<%= domain %>_chart"></div>
<% end %>

<script>
  $.plot($("#domain1_chart"), ...);
  $.plot($("#domain2_chart"), ...);
  .
  .
</script>

似乎在调用Javascript时,div的id还没有设置,或者是那些行。我尝试使用settimeout()来调用$ .plot,但这也不起作用。但是当我删除&lt;%= domain%&gt;时,它确实有用。来自身份。

有关如何使用动态ID的方法的任何想法?

3 个答案:

答案 0 :(得分:2)

解决方案:

<% @domains.each_with_index do |domain, i| %>
  <div id="domain<%= i %>_chart"></div>
<% end %>

<强>修正

你想要做些更好的事情:

<% @domains.each_with_index do |domain, id| %>
   <%= content_tag :div, id: "domain#{id}_chart", class: "chart" do %>
      ...
   <% end %>
<% end %>

-

您还需要考虑自己的javascript:

#app/assets/javascripts/application.js
var charts = function() {
   $(".chart")....
});
$(document).on("page:load ready", charts);

注意我是如何调用图表的?这是因为您只应使用id识别页面上的特定元素。如果您要对元素集合使用相同的功能,那么您最好调用类而不是id

答案 1 :(得分:0)

您不是在等待DOM准备就绪:

$(document).ready(function() {
    $.plot($("#domain1_chart"), ...);
    $.plot($("#domain2_chart"), ...);
});

答案 2 :(得分:0)

问题可能是jQuery插件没有等到页面加载完毕。

在文档就绪方法中运行您的代码。

<script>
  $(document).ready(function(){
    $.plot($("#domain1_chart"), ...);
    $.plot($("#domain2_chart"), ...);
  });
</script>