【问题标题】:JQuery AJAX append to appended elementJQuery AJAX 附加到附加元素
【发布时间】:2012-05-24 01:19:13
【问题描述】:

我正在使用带有 AJAX 的 RoR 来创建帖子。所以我需要能够通过以前的 id 添加“答案”。
每次提交按钮点击下面的代码被调用

$("<%= selector %>").append("<div id='<%= newanswer %>'><%= escape_javascript(render('answer_layout')) %></div>");

在哪里
selector 看起来像这样 #answer-12
newanswer 将是 #answer-13

第一次按建议工作,但是当我第二次单击提交时,我需要使用已经附加的#answer-13 div 来新附加#answer-14,它不起作用。我了解该文档不知道第一个附加元素,但不知道如何解决此问题。感谢您的帮助。

更新 我使用编辑和销毁链接渲染新的answer,所以我不仅需要能够解决这个问题,还需要与添加的元素完全交互

【问题讨论】:

  • newanswer 不应有 # 开头的符号
  • @F.Calderan。他只是说它的 id 是answer-13
  • gdoron 对,ofc id 名称中没有#newansweranswer-13

标签: ruby-on-rails ajax jquery append


【解决方案1】:

将所有答案归类,然后选择最后一个:

$('.theClass:last').append("<div id='<%= newanswer %>'><%= escape_javascript(render('answer_layout')) %></div>");

或者使用这个:

$('[id^="answer-"]:last').append("<div id='<%= newanswer %>'><%= escape_javascript(render('answer_layout')) %></div>");

jQuery('[attribute^="value"]')
attribute- 属性名称。
value- 属性值。可以是不带引号的单个单词或带引号的字符串。

【讨论】:

  • 感谢您的建议!但我不能使用第一个变体,第二个是硬编码,因为如果规则改变或混合答案将不起作用
  • @ArcaneRain。你有更好的选择吗...?
  • 暂时没有,Beniot 的解决方案将适用于混合答案,但我相信有一种方法可以初始化 DOM 树中的附加元素以使用它,因为在我真正的应用程序答案中包含我需要使用的 cmets 的子表单,就像这里一样,在 stackoverflow 中,在附加答案后,我需要能够添加 cmets 等
【解决方案2】:

您还可以为所有答案创建一个包装 div,因为 append 添加到当前选定元素的末尾。

$('#answer-div').append(etc.....也是如此

而不是$('#specific-answer').append(etc...

【讨论】:

    【解决方案3】:

    我可以提出一个建议,您可以在 DOM 中的某个位置放置您最近使用的 ID:

    var appendTo = $('#append-to');    
    var appendToId = appendTo.attr('latest');
    $( '#' + appendToId ).append("<div id='<%= newanswer %>'><%= escape_javascript(render('answer_layout')) %></div>");
    
    appendTo.attr( 'latest', '<%= newanswer %>' );
    

    【讨论】:

      猜你喜欢
      • 2014-07-26
      • 2021-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-15
      • 1970-01-01
      • 2013-07-14
      • 2012-01-11
      相关资源
      最近更新 更多