我动态地将HTML附加到网页上,我也使用jQuery来管理内容。
当我添加HTML代码时,jQuery忽略了它的存在 例如:
$("td.elementToClick").click(...
使用jQuery可以很好地工作。但是,如果代码中的某处我追加:
$("tr#myRowToAppend").append("<td class="elementToClick>...</td>");
如果点击它,jQuery将忽略这个新元素。
当jQuery在页面加载完成后关联事件时,我需要以下两个解决方案之一: - 强制DOM重新评估页面而不改变当前布局(我不希望刷新,所以location.reload()是不可能的)。 - 强制jQuery将这个新元素添加到它的内部事件管理器中。
我不想使用onclick="blabla()"
,我真的需要使用jQuery。
我该如何做到这一点?
答案 0 :(得分:9)
答案 1 :(得分:2)
live()方法可以减轻您的大部分麻烦。
我在IE和克隆元素中经常看到这种情况,为了支持IE,你必须对DOM操作更加小心。
我也看到很多关于SO的问题,人们在没有首先克隆它的情况下将dom元素复制/移动到dom的新部分时会出现问题,这在IE中运行得不好。
因此,您可以使用live或必须处理来自动态插入的DOM元素的事件,请确保使用clone(true)克隆它们以指定您希望复制事件:
$("body").append('<div id="one"></div>");
$("#one").mouseover(function(){});
$("body").append( $("#one").clone(true).attr('id','two') );