AJAX请求隐藏文本而不是放置部分文本

时间:2015-08-20 09:30:47

标签: javascript jquery ruby-on-rails ajax

我试图用评论来实现回复,所以当你点击"回复"部分应显示在当前评论下方。

所以在我的reply.js.erb中,我有

$("<%= j render(:partial => 'reply', :locals => { :comment => Comment.build_from(@obj, current_user.id, "") }) %>").insertAfter($('<%= @div_id %>')).show('fast');

其中@div_id是其回复的评论的分部ID。所以现在发生的事情是部分不会显示,而且它也隐藏了@div_id下面的内容。不知道发生了什么。

编辑:所以,我相信我弄明白为什么它被隐藏了。我在资产中有另一个名为comments.js.coffee的javascript文件,其中包含此 -

jQuery ->
  $(document)
    .on "ajax:beforeSend", ".comment", ->
      $(this).fadeTo('fast', 0.5)
    .on "ajax:success", ".comment", ->
      debugger;
      $(this).hide('fast')
    .on "ajax:error", ".comment", ->
      debugger;
      $(this).fadeTo('fast', 1)

&#34;的.comment&#34;是包含Reply链接的partial的标题。同一部分包含Destroy链接。所以,当我点击“回复”时,它也会运行此代码,之后会隐藏评论。这是我的评论部分

%div.comment{ :id => "comment-#{comment.id}" }
    %hr
    = link_to "×", comment_path(comment), :method => :delete, :remote => true, :confirm => "Are you sure you want to remove this comment?", :disable_with => "×", :class => 'close'
    %h4
        = comment.user.first_name
        %small= comment.updated_at
    %p= comment.body
    %p= link_to "Reply", comment_reply_path(comment), :method => :get, :remote => true

我将如何解决这个问题?

3 个答案:

答案 0 :(得分:6)

@div_id可能没有#,因此在#

之前@div_id之前的代码可能会有效
$("<%= j render(:partial => 'reply', :locals => { :comment => Comment.build_from(@obj, current_user.id, "") }) %>").insertAfter($('#<%= @div_id %>')).show('fast');

答案 1 :(得分:3)

您可以尝试以下方法吗?

$('<%= @div_id %>').append("<%= j render(:partial => 'reply', :locals => { :comment => Comment.build_from(@obj, current_user.id, "") }) %>").show('fast');

更新

你可以试试append吗?

答案 2 :(得分:2)

$("<%= j ( render partial: 'reply', :locals => { :comment => Comment.build_from(@obj, current_user.id, "") }) %>").insertAfter($('#<%= @div_id %>')).show('fast');

这将正常工作....只是语法上的改变