我有此功能可以打印具有属性<img>
的所有[proto]
的图像尺寸。
当我使用这个each
方法尝试该函数时,它只返回一个函数。
错误是什么?
function size(){
var $img = $('img[proto]');
$($img).each(function(){
var height = $(this).height;
var width = $(this).width;
$(this).parent().find('p').remove();
$(this).parent().append('<p class="size">' + width + '-' + height + '</p>');
});
}
size();
答案 0 :(得分:8)
这些功能不是属性,高度和宽度:
c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\8003cdd3\a3d802bd\App_Code.k3skken3.dll
答案 1 :(得分:0)
$($('img[proto]'))
。这样你可以将元素两次转换为jQuery。width
和height
是函数,而不是属性。所以你需要添加括号。function size() {
$('img[proto]').each(function() {
var height = $(this).height(),
width = $(this).width();
$(this).parent().find('p').remove();
$(this).parent().append('<p class="size">' + width + '-' + height + '</p>');
});
}
size();
我甚至更愿意只获得一次所需的元素。你这样做的方式是将this
四次转换为jQuery对象,并为父级搜索两次。表现可以保存。
var element = $(this),
parent = element.parent(),
height = element.height(),
width = element.width();
parent.find('p').remove();
parent.append('<p class="size">' + width + '-' + height + '</p>');
如果你想直接执行这个功能,你可以使用IIFE或只是删除它周围的函数并直接执行它。
(function() {
$('img[proto]').each(function() {
// ...
});
})();