Jquery 如何将图像属性设置为其他两个属性的划分?

Jquery 如何将图像属性设置为其他两个属性的划分?,jquery,image,loops,Jquery,Image,Loops,我试图通过一系列类为“img cover”的图像循环JQuery函数,以便为每个图像分配一个bgHeight、bgWidth和bgRatio变量值,分别对应于该图像的宽度、高度和纵横比。但是,我很难将这些变量分配给循环中的每个图像。欢迎您的任何意见 原始JQuery(用于静态1500x2250图像): 我尝试循环浏览多个图像: $('.img-cover').each(function() { $(this).attr('bgHeight',$(this).height());

我试图通过一系列类为“img cover”的图像循环JQuery函数,以便为每个图像分配一个bgHeight、bgWidth和bgRatio变量值,分别对应于该图像的宽度、高度和纵横比。但是,我很难将这些变量分配给循环中的每个图像。欢迎您的任何意见

原始JQuery(用于静态1500x2250图像):

我尝试循环浏览多个图像:

$('.img-cover').each(function() {
    $(this).attr('bgHeight',$(this).height());
    $(this).attr('bgWidth',$(this).width());
    $(this).attr('bgRatio',$(this).bgHeight() / $(this).bgWidth());
});

谢谢

您在此处调用两个未定义的函数:

$(this).bgHeight() / $(this).bgWidth() //no such functions in jQuery, unless you've added them
jQuery是这样工作的:如果你给它传递两个参数,它就是一个«setter»。如果只需要获取属性的值,请仅对一个参数使用
attr()

$(this).attr('bgWidth') //gets the value of an attribute called 'bgWidth'
除此之外,还有一些代码风格问题。1) 您可以将
$(this)
保存到函数内部的变量中。2) 您不必从属性获取bgWidth和bgHeight,它们在一次迭代中等于width()和height()值。将它们保存到变量w、h中并使用它们:

$('.img-cover').each(function() {
    var $img = $(this),
        w = $img.width(),
        h = $img.height();
    $img.attr('bgHeight', h);
    $img.attr('bgWidth', w);
    $img.attr('bgRatio', h / w);
});
$('.img-cover').each(function() {
    var $img = $(this),
        w = $img.width(),
        h = $img.height();
    $img.attr('bgHeight', h);
    $img.attr('bgWidth', w);
    $img.attr('bgRatio', h / w);
});