2012-05-16 220 views
0

我正在使用RoR和AJAX创建帖子。所以我需要能够通过以前的ID添加“答案”。
每次提交按钮点击下面的代码被称为JQuery AJAX附加到附加元素

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

其中
selector看起来像这样#answer-12
newanswer#answer-13

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

修订 我呈现新answer与编辑和删除的链接,所以我不仅需要追加其可以workarounded,但完全与添加元素

+0

'newanswer'应该不会有开始'''签署 – fcalderan

+0

@ F.Calderan。他只是说它的id是'answer-13' – gdoron

+0

gdoron的权利,ofc在ID名称中没有'#'。 'newanswer'是'answer-13'。 –

回答

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 - 属性值。可以是不加引号的单个单词或带引号的字符串。

+0

感谢您的建议!但是我不能使用第一种变体,而第二种变体是硬编码,因为如果规则被改变或者混合回答不会起作用 –

+0

@ArcaneRain。你有更好的选择...? – gdoron

+0

现在还没有,Beniot的解决方案将适用于混合答案,但我相信有一种方法可以初始化DOM树中的附加元素以使用它,因为在我的真实应用程序答案中包含我需要的注释的子表单使用,就像这里,在计算器中,并附加一个答案后,我需要能够添加评论等 –

2

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

所以有$('#answer-div').append(etc.....

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

0

我可以提出一个建议,你可以放置的地方在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 %>');