2013-04-08 65 views
1

我遇到了作用域问题。对于这个没有问题的问题抱歉。jQuery中的作用域load()函数

我想将图像追加到父div与jQuery,但不知道如何将变量“theParent”传递给加载函数。

// inside a this.each loop 

    var theParent = $(this).parent('div.parent'); 

    var img = $("<img />") 
       .attr('src', '/path/img.jpg') 
       .error(function(){ console.log('error'); }) 
       .load(function(){ 
        img.addClass('myClass'); // <-- not working plz help 
        theParent.append(img); // <-- not working plz help 
        }); 
+1

你能张贴整个this.each循环?看起来像是等待.load在下一次迭代之前完成的问题。 – ZimSystem 2013-04-08 15:19:39

+0

这里似乎没有任何范围问题。 – Quentin 2013-04-08 15:19:46

+0

这似乎工作正常 - http://jsfiddle.net/k2Kb7/1/(虽然不知道你的循环) – Ian 2013-04-08 15:38:32

回答

3

LIVE DEMO

$(this).addClass('myClass');会工作,但使用:

var img = $("<img />", { 
      "src" : '/images/favicon.png', 
      "class" : 'myClass' 
     }) 
     .error(function(){ console.log('error'); }) 
     .load(function(){ 
       img.appendTo(theParent); 
     }); 
+1

'img'未定义? 'load'回调会稍后执行,所以当它试图在稍后解析对'img' **的引用时,它应该可用。 – Ian 2013-04-08 15:29:35

+0

谢谢,像一个魅力工作! – herrmarek 2013-04-08 15:30:10

0

试试这个:

var theParent = $(this).parent('div.parent'); 

    var img = $("<img />", { 
     src: '/path/img.jpg', 
     "class": 'myClass' 
    }).appendTo(theParent); 
0

你有没有试过如下:

$('#theDiv').prepend('<img id="theImg" class="myClass" src="theImg.png" />')