Javascript 如何使用ajax和jQuery在循环中呈现部分内容?
我曾尝试使用ajax和jquery在单击时渲染部分内容。详情请参阅 它工作了,局部渲染了,但工作不正常 我已经把Javascript 如何使用ajax和jQuery在循环中呈现部分内容?,javascript,jquery,ruby-on-rails,ruby-on-rails-4,Javascript,Jquery,Ruby On Rails,Ruby On Rails 4,我曾尝试使用ajax和jquery在单击时渲染部分内容。详情请参阅 它工作了,局部渲染了,但工作不正常 我已经把链接放置在一个循环中,但是当单击“新评论”时,它会出现在第一篇文章中,当我在第二/第三/第四篇文章中单击“新评论”时,所有的部分都会在第一篇文章中呈现。发生了什么事 请看下面我的代码 Post/index.html.erb 注释/new.js.erb $('new_comment').hide().after('') _表格2.erb 您对所有元素(帖子和新评论按钮)都使用了
链接放置在一个循环中,但是当单击“新评论”时,它会出现在第一篇文章中,当我在第二/第三/第四篇文章中单击“新评论”时,所有的部分都会在第一篇文章中呈现。发生了什么事
请看下面我的代码
Post/index.html.erb
注释/new.js.erb
$('new_comment').hide().after('')
_表格2.erb
您对所有元素(帖子和新评论按钮)都使用了相同的ID,因此当您单击新评论按钮时,所有部分都在第一篇帖子中呈现。因为它是找到的第一个匹配元素。
你应该为你的帖子使用不同的元素ID,这样当你点击新评论时,你就会知道在哪里(我指的是哪个帖子)呈现表单。
例如,您可以使用如下计数器:
然后,您只需传递元素id并更改以下行:
$(“#”+PassedElementId).hide()。在(“”)
谢谢你的回答之后,它不起作用,我得到了
的语法错误,不管怎样,每个帖子都有自己的:id
,我是否需要将:id
传递给jQuery,这样它就知道它应该呈现什么内容了?@laman问题是$('new\u comment')。hide().after(“”)
。所有注释按钮都具有相同的id(新注释),当您尝试隐藏注释按钮并呈现注释表单时,只有第一行会受到影响。注释按钮必须使用唯一的ID。通过添加i++
我只是想介绍一下这个策略。谢谢你的回复,我真的不明白$('#'+PassedElementId)
是如何工作的,我想知道你能否解释一下。干杯
<% @posts.each do |post| %>
<%= post.title %>
<%= post.content %>
<%= link_to 'New Comment', new_comment_path, id: 'new_comment', remote: true %>
<% end %>
$('#new_comment').hide().after('<%= j render("form") %>')
<%= form_for(@comment) do |f| %>
<div>
<%= f.label :body %><br>
<%= f.text_area :body %>
</div>
<div>
<%= f.submit %>
</div>
<% end %>