4
我有一些JavaScript代码,我想在用户单击其中一个文件夹后执行 - 它触发show action和show.js.erb,渲染部分。在部分渲染上执行JavaScript
Show.js.erb,其中,当用户点击他们的文件夹中的一个被触发,如下所示:
$("body").append("<%=j render :partial => 'contents', :locals => {:folder => @folder } %>");
它成功地注入部分_contents.html.erb,它看起来像这样:
<script type="text/javascript">
d3JSON = function(){
d3.json("/folders/<%= @folder.id %>.json", function(error, data) {
if (error) return console.warn(error);
var folderChildren = [],
circle;
/*for (var i=0; i < data.submissions.length; i++) {
var submissionWords = data.submissions[i].content.split(' ').join('');
var size = submissionWords.length;
folderChildren[data.submissions[i].id] = size;
console.log(folderChildren);
};*/
var svg = d3.select("body").selectAll("svg");
circle = svg.selectAll("circle")
.data(data.submissions);
circle.enter().append("svg:a")
.attr("xlink:href", function(d){
return "http://localhost:3000/submissions/" + d.id;
})
.append("circle")
.attr("cy", function(d) {return d.content.length * 5 + "px";})
.attr("class", "floating")
.attr("cx", function(d){
return (d.content.length/2) * 10 + "px";
})
.attr("r", function(d){ return (d.content.length/2) * 1.2;});
circle.exit().remove();
});
};
d3JSON();
</script>
我测试过这个JavaScript和它的作品,但是当它注入它应该与DOM中的div互动,事实并非如此。 div位于我的index.html.erb文件中,所以当这个JS被注入时它们已经被加载。我尝试了很多不同的事情,试图让这个工作,但唉,没有运气任何建议?如果我尝试通过部分工作来加载简单的alert()
这样的东西,但我猜这是因为加载DOM和js的顺序而无法工作。
它的工作,感谢一百万! –
@TomMaxwell,太好了。别客气。 – vee