我有以下代码:
<% @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的方法的任何想法?
答案 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>