为什么动态onChange函数不会执行?

时间:2014-08-05 10:54:55

标签: jquery html javascript-events onchange

我使用jQuery动态创建html元素,这是我之前没有做过的事情,但我有一个奇怪的错误。我正在创建一个输入元素,我想为它重新注册一个更改事件。

var label_input = $("<input />", {
         type: 'text',
         change: function() {
           console.log("--");
         }
});

当我在输入中键入内容,然后单击它或按Enter键时,它应该向控制台输出内容。相反,如果我点击它没有任何反应,如果我点击输入元素删除自己。我设置了一个事件断点来改变&#39;并且在这两种情况下都会改变&#39;触发器,但不执行该功能。当我按Enter键时,我认为它将其注册为提交,因为输入是一个表单,因为我收到一条错误消息

  

GET http://run.plnkr.co/tmXvBwKyliwV5XKS/? 404(未找到)

function meta_form_generator(elem_id, label, data_update_functions) {
  var form_container = $("<form />", { id: "metaForm", class: elem_id,role: 'form' });
    var label_group = $("<div />",{ class: 'form-group col-xs-6' });
      var label_label = $("<label />",{ text: 'element label:' });
      var label_input = $("<input />",{ 
        type: 'text', 
        class: elem_id + ' form-control',
        placeholder: label,
        change: function(){console.log("---");}
      });
    label_group.append(label_label);
    label_group.append(label_input);
  form_container.append(label_group);
  return form_container;
}

我还尝试创建我想要更改的函数,以便在初始创建之外调用,我尝试过label_input.change(test_change);

当上面的代码被隔离时,它似乎有效,虽然按下Enter仍然会导致它自行删除。 JSFiddle但是在我的项目中,它有这个bug。 Plunker。此代码位于templates.js文件中,并在scripts.js中的Form_Data_Display函数中调用。为什么不会执行更改功能?

编辑我做了更多的讨论,结果$(document).on('change', "."+elem_id, data_update_functions.set_label);工作,其中elem_id是表格中每个元素的标识符,{{1是从外部传入的函数。但问题仍然存在,为什么其他方法不起作用?

0 个答案:

没有答案