2013-07-29 73 views
0

我試圖讓this指向每個img對象方法中的一個函數裏,像這樣

var responsiveImageSwap = (function(){ 
    return { 
     init : function(){ 
      $.each('img', function(){ 
       var width  = $(window).width(), 
        _this  = this, 
        alert(_this.attr('src')) 
      }) 
     } 
    } 
})(); 
responsiveImageSwap.init(); 

但它引用的object和不是img,我該如何參考圖像?

+4

爲什麼不'$(「IMG」)。每個(...'?還有,你*不*要計算一個循環內視口寬度。 –

+0

啊好點約寬... –

回答

3

This?

return { 
    init: function() { 
     var vw = $(window).width(); // viewport width 

     $('img').each(function() { 
      var $img = $(this); 

      // Do stuff with $img, e.g. retrieve $img.attr('src') 
     }); 
    } 
}; 
+0

謝謝,你先回答了你的評論問題,所以會接受這個無雙關語) –

+1

+ 1用於在循環外部移動'$(window).width()'。 –

+0

是的,謝謝你發現! –

8

$.each用於循環收集。你正在做的是循環字符串'img'中的字母。

您想使用.each;這是針對jQuery對象的。

$('img').each(function(){ 
    var width = $(window).width(), 
     // this is a DOM element, we need to make it a jQuery object 
     _this = $(this), 
    alert(_this.attr('src')) 
}); 
+0

什麼這個點存儲了對這個的引用? – Virus721

+0

@ Virus721:我剛剛使用了OP的代碼,在這裏它並不是很有用,但可能是他在回調中使用了閉包。 –

+0

@RocketHazmat你的代碼不起作用。 '這個'是指沒有'.attr()'方法的IMG元素 –

相關問題