以下是一段让我疯狂的jquery代码
var count = 0;
$('#some-element-id').click(function(){
var currentElement = '#new-div-id-'+count;
$(currentElement).after($('<div id="new-div-id-'+(++count)+'">Hello World!<span class="delete_me">x</span></div>'));
});
$(".delete_me").click(function () {
alert('Deleting!');
});
现在,当我点击标识为some-element-id
的元素时,会插入一个新div,我会看到x
字符。但是点击x
并没有做任何事情。没错。根据{{3}},我可以通过这种方式插入元素,这样可以正常工作。我可以使用Firebug来获取DOM树中的新元素。现在为什么当我点击span
时没有发生任何事件?由于某些未知原因,我被迫使用jQuery 1.3.2但这应该不是问题。
更新1 我理解我正在尝试将一个偶数绑定到DOM中不存在的元素。但请注意,即使不是解雇,也会在元素嵌入DOM后触发事件。我使用了以下代码甚至它不起作用
$("span.delete_me").live('click',function () {
alert('Deleting!');
});
控制台上没有错误。 更新2 这是实际呈现的代码http://api.jquery.com/after
答案 0 :(得分:1)
答案 1 :(得分:0)
使用live方法:
$(".delete_me").live("click", function () {
alert('Deleting!');
});
当您在帖子中调用.click方法时,&#34; x&#34;不存在。
答案 2 :(得分:0)
试
$(".delete_me").live('click',function () {
alert('Deleting!');
});
你的.click()无效,因为你调用.click()时.delete_me类不在DOM中,因此永远不会发生绑定。 .live()确保对在运行时创建的元素进行绑定。
答案 3 :(得分:0)
嗯,你需要用live()
$(".delete_me").live('click',function () {
alert('Deleting!');
});
live()将适用于动态添加的对象