在动态创建的元素上动态附加元素

时间:2016-01-05 23:21:19

标签: jquery ruby-on-rails

我有一个动态内容的模态。 例如 我可以通过在文本框中键入someting并按Enter键来创建项目。 点击输入后,我想在文本框下面发出通知,该文本框本身是动态创建的。

通常我会把它放在我的.js.erb

$("#idOfTextbox").append("some waring")

但正如我所提到的那样,带有id的文本框:idOfTextbox是动态创建的,因此这种方法不起作用。

我对此有很多了解,我认为我粗略地理解了这个问题,通常你会做这样的事情

$(document).on("click", "#idOfTextbox", function(){
  $(this).append("some warning");
};

但我真的不想将它绑定到特定事件,我只想在控制器呈现.js.erb文件时附加消息

我认为类似.on(“加载”)可能有用,但到目前为止我没有成功。

我真的很感激任何帮助。

2 个答案:

答案 0 :(得分:0)

试试这个:

$('body').append("<div id='idOfTextbox'></div>");
$(document).find('#idOfTextbox').append("some value");

示例:https://jsfiddle.net/DinoMyte/2rhasve1/2/

答案 1 :(得分:0)

好的答案比预期的要容易。

我刚刚替换了ajax请求本身成功部分内的项目:

这会将#role_name textfeld的内容发送到控制器并呈现用#newrole id替换现有的div和我的文本

$(function(){
  $("body").on("keyup", function(e){
    if ( e.which == 13 ) {
      role_name = $("#role_name").val();

      $.ajax({
      type: "POST",
      dataType: "script",
      url: '/roles',
      data: {role: {name: role_name} },
      success: function(){
        $("#newrole").replaceWith("creation succesful bitches");
        }
      });
    }
  });
})

如果你想访问控制器的响应,只需调用这个函数

success: function(html){

和html变量内部应该是控制器响应的内容。

注意:我可以替换但不能追加,不知道为什么......