与jquery after()行为混淆

confused with jquery after() behavior

本文关键字:jquery after      更新时间:2023-09-26

下面是一段让我抓狂的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!');
});

现在相应地,当我单击id为some-element-id的元素时,插入一个新的div,我看到x字符。但是点击x不会做任何事情。没有错误。根据http://api.jquery.com/after,我可以这样插入元素,这是正常工作的。我可以使用Firebug看到DOM树中的新元素。现在为什么当我点击span时没有事件被触发?由于一些未知的原因,我被迫使用jQuery 1.3.2,但这应该不是问题。

更新1 我知道我正在尝试将偶数绑定到DOM中不存在的元素。但是请注意,即使没有触发,事件也会在元素嵌入到DOM中时触发。我使用了下面的代码,即使它不工作

$("span.delete_me").live('click',function () {
  alert('Deleting!');
});

控制台上没有错误。更新2 下面是实际呈现的代码http://jsfiddle.net/8sjcZ/

见http://jsfiddle.net/vKwm6/

使用live方法

$(".delete_me").live("click", function () {
  alert('Deleting!');
});

当你在文章中调用。click方法时,"x"并不存在。

try

$(".delete_me").live('click',function () {
  alert('Deleting!');
});

你的。click()不起作用,因为在你调用。click()时。delete_me类不在DOM中,所以绑定永远不会发生。.live()确保在运行时创建的元素发生绑定。

嗯,你需要用live()

$(".delete_me").live('click',function () {
  alert('Deleting!');
});

live()将应用于动态添加的对象

http://api.jquery.com/live/