似乎点击功能根本没有绑定,任何人都知道为什么?
<img src='img.jpg'/>
$("img").each(function(){
var src = $(this).attr('src');
var img = new Image();
img.src = src;
img.onLoad = function(){
$(this).click(function(){ alert( 'loaded' }); // < not binding
}
});
不知道还有什么可以尝试。
答案 0 :(得分:3)
JavaScript区分大小写。
它是onload
,而不是onLoad
。
第二个问题是你将click
处理程序绑定到新创建的var img
,它永远不会添加到DOM中。您将其绑定到img = new Image()
,不您在顶部的<img>
标记。
忽略this
并尝试以下操作:
$("img").each(function(i, el){
var $el = $(el);
var src = $el.attr('src');
var img = new Image();
img.src = src;
img.onload = function(){
$el.click(function(){ alert( 'loaded' }); // < not binding
}
});
答案 1 :(得分:2)
this
不是DOM中的图像alert()
$("img").each(function(index, element){
var img = new Image();
img.onload = function(){
$(element).on('click', function(){
alert( 'loaded');
});
}
img.src = this.src;
if (img.complete) img.onload();
});
答案 2 :(得分:0)
由于您已经在使用jQuery,因此可以按如下方式使用它:
var that = $(this);
$(img).load(function(){
that.click(function(){ alert( 'loaded' });
});
加载image
后,click
事件将绑定到图像。