在移动中添加按钮时保留jQuery功能
Retain jQuery functionality when buttons are added on the go
我有一个列表元素块,当单击"添加"按钮时,我需要添加它。HTML:
<li>
<div><h3 >User name sss updated this.
<input type="button" value="X" class="delete"/></br></h3>
</div>
SOME TEXT HERE
</li>
jQuery:
$(".delete").click(function(){
$(this).closest("li").slideUp();
});
$("#addPost").click(function(){
var inData = '<li><div><h3>User name sss updated this.<input type="button" value="X" class="delete"></input></br></h3></div>';
$("#midContent ul").append(inData+'Sarthak</li>');
});
这个块有一个删除按钮和一个附加的jQuery函数
如果页面上已经存在该块,则其工作正常。但是,当我使用jQuery append添加这个块时,块被正确地呈现,但删除功能对新添加的块不起作用。我哪里错了?
此外,还有什么比JS代码中的硬编码更好的方法来添加这个块呢?(只需使用id或class引用页面上已经存在的元素)
您需要为动态创建的DOM节点委派事件。您可以委托给父div,也可以委托给文档本身。
$(document).on('click', '.delete', function(e) {
//your code here
});
单击处理程序中的第二个参数是要附加单击处理程序的选择器。
进一步阅读:http://learn.jquery.com/events/event-delegation/
尝试在动态创建的元素上使用事件.on('click',function(){})
$(".delete").on('click',function(){
$(this).closest("li").slideUp();
});
$("#addPost").on('click',function(){
var inData = '<li><div><h3>User name sss updated this.<input type="button" value="X" class="delete"></input></br></h3></div>';
$("#midContent ul").append(inData+'Sarthak</li>');
});
另外,既然可以直接附加代码,为什么还要创建一个变量呢?
相关文章:
- 如何使用jquery强制一个单词更改大小写等以保留品牌
- Jquery html() 和保留元素名称
- 如何在使用JavaScript或jQuery刷新父页面后保留iframe-src
- 保留 JQuery Vars 用于另一个函数(全局变量?)
- 数据是否等于保留或无法被 jQuery/Sizzle 选择
- 将参数传递给 jQuery .click WHILE 保留事件参数
- jQuery blimp文件上传-上传后保留选择图像行
- 在可排序的JQuery UI列表中至少保留一个项目
- Jquery:如何在保留文本的同时打开字符串的所有span标记
- jQuery深度扩展并保留所有属性
- 保留当前点击事件jquery
- 返回浏览器时保留jQuery addClass
- asp.net Jquery.ajax保留JSON.分析意外字符错误
- 保留此内容并保留 jQuery 上下文
- 如何在输入元素文本字段中显示特殊字符,但仍保留JQuery中的值
- 使用模板,但保留jquery绑定
- 在移动中添加按钮时保留jQuery功能
- 保留jquery粘贴格式
- 保留jquery选项的值,保存用户的值
- 使用requireJS优化器为highcharts保留jQuery依赖