2013-02-21 27 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" 
    }); 
});