2013-02-21 73 views
0

我試圖調整一系列圖像的大小,因爲瀏覽器寬度減少。下面的代碼工作正常,但當然隨着瀏覽器的增加,傳遞的img不能被調整爲更大尺寸。

$('#image img').each(function() { 
     $($(this)).resizecrop({ 
     width:width, 
     height:height, 
     vertical:"top" 
    }); 
}); 

有了這段代碼,我試圖通過原始圖像,調整它的大小,然後交換它爲較小的圖像。我收到一個錯誤,將新圖像分配給$(this)(無效的左側和側面分配)。

這是爲什麼,我做錯了什麼?謝謝,

$('#image img').each(function() { 
var img_path = $($(this))[0].src; 
var img = $('<img />').attr({ 'src': img_path }); 
$(this) = img; 

     $($(this)).resizecrop({ 
     width:width, 
     height:height, 
     vertical:"top" 
    }); 
}); 
+0

不應該jQuery選擇只是'$ ('img')'?不知道這是否是問題。 – defaultNINJA 2013-02-21 18:09:14

+0

'$(this)'不是您可以分配的變量;它是一個返回值的表達式。 – meagar 2013-02-21 18:30:49

回答

1

讓我們清楚一些誤解,你似乎有..

  • $($(this))相同$(this)
  • $(this)[0]this是DOM元素與this
  • 相同您無法將值分配給jquery對象以便r E將引用的DOM元素,所以$(this) = img不起作用(它是什麼引發你提到的錯誤)

現在,您可以使用插件(http://code.google.com/p/resize-crop/)包裹目標元素在另一個爲了做它的事情..

你將不得不解開的元素,並清除它的風格,重新申請插件的工作。另外,插件工程,以及一組元素,不僅對單個元素,這樣你就不必使用.each()運行每張圖像的插件..

$('#image img').unwrap().removeAttr('style').resizecrop({ 
     width:width, 
     height:height, 
     vertical:"top" 
    }); 
0

您無需在任何地方重新分配img。這是一個jQuery對象已經所以只是用它:

$('#image img').each(function() { 
var img_path = $($(this))[0].src; 
var img = $('<img />').attr({ 'src': img_path }); 
img.resizecrop({ 
     width:width, 
     height:height, 
     vertical:"top" 
    }); 
});