2012-12-19 37 views
0

我想将负载处理程序绑定到动态创建的对象(我的生产代码中的骨干视图)。我试图使用In jQuery, how to attach events to dynamic html elements?中概述的方法,它适用于点击处理程序,但不适用于加载处理程序。有谁知道如何解决这个问题?如何将负载处理程序附加到动态创建的项目

这工作(与单击处理)

$(document).ready(function() { 
    $("body").on("click", "img", function(){ 
     console.log("foo"); 
    }); 

    create(); 
    }); 

    function create(){ 
    $img = $("<img />").attr("src", "http://www.pureweber.com/wp-content/uploads/2011/04/jquery_icon.png"); 
    $("body").append($img); 
    } 

但这并不(带负载处理)

$(document).ready(function() { 
    $("body").on("load", "img", function(){ 
     console.log("foo"); 
    }); 

    create(); 
    }); 

    function create(){ 
    $img = $("<img />").attr("src", "http://www.pureweber.com/wp-content/uploads/2011/04/jquery_icon.png"); 
    $("body").append($img); 
    } 
+3

你不能。负载向身体注册,负载事件不会起泡,事实上它根本就不起泡。 – adeneo

+0

这是有用的信息,谢谢! –

回答

2

不幸的on用subselector使用只适用于事件类型的泡沫向上。 DOM load事件不会冒泡树,所以它永远不会到达您正在侦听它的body

http://en.wikipedia.org/wiki/DOM_events

您将需要处理程序手动连接到您创建的任何图像。

$(document).ready(function() { 
    $("body img").on("load" onLoad); 

    create(); 
}); 

functon onLoad(){ 
    console.log("foo"); 
} 

function create(){ 
    $("<img />") 
    .on('load', onLoad) 
    .attr("src", "http://www.pureweber.com/wp-content/uploads/2011/04/jquery_icon.png") 
    .appendTo('body'); 
} 
+0

谢谢你的帮助!有什么办法可以将一个负载处理程序附加到动态创建的图像上吗? –

+0

谢谢您的详细解答,我会手动附加一个负载处理程序! –

相关问题