Jquery 将图像添加到dom并执行.load

Jquery 将图像添加到dom并执行.load,jquery,image,load,Jquery,Image,Load,好吧,这很奇怪。 以下代码适用于所有浏览器,但在开发工具中将IE9更改为IE8时,IE9除外 var img = $('<img/>').load(function (e) { $('.md').append(e.target); }).attr({ 'id': 'imgprofile', 'src': "http://upload.wikimedia.org/wikipedia/commons/thumb/2/28/HelloWorld.svg/512px-HelloWor

好吧,这很奇怪。 以下代码适用于所有浏览器,但在开发工具中将IE9更改为IE8时,IE9除外

var img = $('<img/>').load(function (e) {
    $('.md').append(e.target);
}).attr({ 'id': 'imgprofile', 'src': "http://upload.wikimedia.org/wikipedia/commons/thumb/2/28/HelloWorld.svg/512px-HelloWorld.svg.png", 'style': 'border:2px solid #a8a7a7;' });
var img=$('
以下是一个例子:

如您所见,当.load事件完成时(仅在IE8模式下) 没有将图像添加到dom中,而是发生了一些事情,整个屏幕变为白色(在JSFIDLE示例中,iframe变为白色)

花了好几个小时试图理解我的代码有什么问题(这是一个很长的JS文件…) 我设法把它放到
$('.md').append(e.target);
行,但我不知道现在该怎么办。。。 这是我的错吗?这是JQuery的错吗?是IE8的错吗? 我能做些什么来解决这个问题

请注意,您必须处于IE8模式才能发生“bug”

编辑**
我只是想让它也在IE7模式下发生…

在那些IEs中,
e.target===document
e.target
无论如何都不合适,您应该使用
e.currentTarget
this

那些较旧的IE使用
srcement
,在本例中,它恰好是
null
,在本例中,jQuery将其分配给
文档

    // Fix target property, if necessary (#1925, IE 6/7/8 & Safari2)
    if ( !event.target ) {
        event.target = originalEvent.srcElement || document;
    }

JQuery不应该处理这个问题吗?毕竟,CrossBrowser是他们的事情……还有,你是如何解决的?OriginaleEvent是未知的。@Dementric将它设置为
document
,否则它将是
null
。尽管
。currentTarget
会比
document
好,但我想他们已经做到了他们的理由?:Pbtw,即使由于将“e.target”更改为“this”来“修复”它,它也会破坏我的脚本的其余部分,就好像没有“.load”一样。@Dementic这很奇怪。jsfiddle工作正常。你能在jsfiddle中复制它吗?我让JCrop在其.load事件之后在该图像上运行。用“this”来修复它会使JCrop无法使用。