车把及;Jquery:动态生成的ID

车把及;Jquery:动态生成的ID,jquery,handlebars.js,Jquery,Handlebars.js,我正在把手页面上生成一个动态表单和按钮 原来的把手代码如下: {{#each record}} <input class="form-control" type="text" id="comment" value={{comment}}> <button class="btn small btn-success" id="btn-savecomment">SAVE COMMENT</button> {{/each}} 其目的是允许用户键入注

我正在
把手
页面上生成一个动态
表单
按钮

原来的
把手
代码如下:

{{#each record}}
    <input class="form-control" type="text" id="comment" value={{comment}}> 
    <button class="btn small btn-success" id="btn-savecomment">SAVE COMMENT</button>
{{/each}}
其目的是允许用户键入注释,然后将其保存到每条记录中

但是,在查看注释时,如何确保按钮标识正确的输入表单?当我点击一个特定的按钮时,它只从第一条记录中检索注释,因为它们都有相同的ID


谢谢你的帮助

你所做的实际上是错的。如您所知,
ID
s不应重复。您应该使用如下内容:

{{#each record}}
    <input class="form-control" type="text" id="comment" value={{comment}}> 
    <button class="btn small btn-success btn-savecomment" id="btn-savecomment-{{@index}}">SAVE COMMENT</button>
{{/each}}

不同元素上不能有相同的id。这就是你的代码不起作用的原因。给每个元素一个不同的id。 您可以使用
{{@index}}
获取当前迭代计数,然后在id中使用它生成动态id,即:

<input class="form-control" type="text" id="comment_{{@index}}" value={{comment}}>

您也应该对按钮执行同样的操作。在jQuery代码中,可以使用
prev()
方法访问输入


然后可以使用jquery访问它。或者您也可以使用类而不是id。这会更好。

好吧,您可以动态生成id,但最有可能的是您应该使用更适合的类或数据值(或类似值):

{{#each record}}
    <input class="form-control" type="text" data-comment={{@index}} value={{comment}}> 
    <button class="btn small btn-success" data-trigger="save">SAVE COMMENT</button>
{{/each}} 

$(document).on("click", "[data-trigger='save']", function (evt) {
  var commentID = $(this).prev().data("comment"); //index number, can be pretty much anything
});
{{#每条记录}
保存评论
{{/每个}}
$(文档)。在(“单击”、“[data trigger='save']”上,函数(evt){
var commentID=$(this).prev().data(“comment”);//索引号可以是几乎任何东西
});

上也有一个需要递增的ID字段。
<input class="form-control" type="text" id="comment_{{@index}}" value={{comment}}>
{{#each record}}
    <input class="form-control" type="text" data-comment={{@index}} value={{comment}}> 
    <button class="btn small btn-success" data-trigger="save">SAVE COMMENT</button>
{{/each}} 

$(document).on("click", "[data-trigger='save']", function (evt) {
  var commentID = $(this).prev().data("comment"); //index number, can be pretty much anything
});