页面加载后创建的标签我有小的应用程序: http://jsfiddle.net/Bwdf6/4/删除与jQuery
但随着点击删除,即后页面加载犯规删除创建的标签。 有什么办法来删除页面加载后创建的标签?
在此先感谢
页面加载后创建的标签我有小的应用程序: http://jsfiddle.net/Bwdf6/4/删除与jQuery
但随着点击删除,即后页面加载犯规删除创建的标签。 有什么办法来删除页面加载后创建的标签?
在此先感谢
使用live()
- Working Demo。
$('.sp').live("click", function() {
$(this).parent().remove();
});
当你动态地创建元素,使用click()
是不够的 - 只分配一个单击处理程序存在的时候click()
被称为所有.sp
元素。
live()
,在另一方面,用于:
附加一个处理程序事件当前 选择器现在和将来匹配其中,所有 元素。
因此,任何动态添加的新元素与sp
类都会将该处理程序附加到它们。
编辑:其实,一对夫妇的人指出,虽然live()
会做你需要什么,在这种情况下使用最有效的功能将是delegate()
,这是用来:
附加一个处理程序,以一个或多个事件 为一组特定的根元素的基础 的 选择现在或将来匹配,所有的元素。
我不会通过发布代码示例来窃取荣耀 - 请参阅@ Mark的答案,应该接受而不是我的。
+1编辑(和体育道德)。 – kapa 2011-05-13 12:06:28
您可以使用.live()
代替:
您可以使用.live()
或.delegate()
.delegate()
将是最好的选择,因为所有的项目都有一个共同的母公司。
$('#theList').delegate(".sp", "click", function() {
$(this).parent().remove();
});
hummm ......你不必在删除任何行动......你想干什么?使用jQuery删除添加的元素,或重新加载页面? – 2011-05-13 11:42:02
我认为每个人都应该停下来回答'.live()'这些类型的问题。这不是最佳做法,应该在最有可能的情况下使用'.delegate()'。我们应该在这里建议最佳实践,而不是狩猎代表。 – kapa 2011-05-13 11:47:01
参见@ Mark的解答比使用live()更有效。 – Town 2011-05-13 12:00:36