【问题标题】:jQuery function ready for new elements [duplicate]jQuery函数准备好新元素[重复]
【发布时间】:2014-09-12 10:33:58
【问题描述】:

我的功能:

jQuery('#allForms td.edit').click(function(e){
    e.preventDefault();
    addTextBox(jQuery(this));
});

不适用于我以这种方式创建的新元素:

var output = '<tr><td class="edit">'+values[0]+
    '</td><td class="edit">'+values[1]+
    '</td><td class="edit">'+values[2]+
    '</td><td class="edit">'+values[3]+
    '</td><td><a href="#" class="deleteForm">USUŃ</a></td></tr>';
formsList.find('tr:last').after(output);
addForm.find("input").val('');

当我点击新添加的元素时,什么也没有发生。当我点击加载网站的元素时,一切正常。

【问题讨论】:

  • 你可以使用jQuery(document).on("click", '#allForms td.edit', function(e){
  • 这是很多问题的重复。请下次使用搜索。
  • @Nit 尽管如此,人们仍然在问题结束之前回答它:)
  • 对不起,我搜索了但我什么也没找到。谢谢。

标签: javascript jquery


【解决方案1】:

您需要使用事件委托将事件附加到动态添加的元素:

jQuery('#allForms').on('click','td.edit',function(e){
e.preventDefault();
addTextBox(jQuery(this));
});

【讨论】:

  • 谢谢。效果很好。
【解决方案2】:

你需要试试这个

jQuery(document).on("click", '#allForms td.edit', function(e){

【讨论】: