我怎么能说“if width> height”然后用jQuery“执行此操作”?

时间:2012-03-06 05:34:13

标签: javascript jquery if-statement

我有几个要素。它们在页面上的数量不断变化,请记住这一点。

该元素名为 .portalimg 。我需要说明width > height是否将width设置为125px。如果是height > width,请将height设置为125px。

这就是我所拥有的:

$('.portalimg').each(function() {
  var pimgw = $(this).width();
    var pimgh = $(this).height();
    if (pimgw > pimgh) {
        $(this).css('width','125px')
    } else {
        $(this).css('height','125px')
    }
});

编辑:它提醒成功但不适用width& height。 我哪里出错了?

编辑2:从下面更清楚地更新了代码。这仍然只限制高度属性,即使图像更高然后它是宽的。看看:

http://jacksongariety.com/gundoglabs/

编辑3:问题是他们都返回0.如果我有一个警告说pimgw或pimgh的值,它总是为0。

编辑4:最后通过缓存得到了最好,最干净的代码,它总是正确加载,即使它从缓存中绘制图像:

$(function(){
    $('.portalimg').ready(function(){
        $('.portalimg').fadeTo(0,1).each(function(index) {
            var a = $(this);
            if (img.width() > a.height()) {
                a.css('width','135px')
            } else {
                a.css('height','125px')
            }
        });
    });
});

6 个答案:

答案 0 :(得分:2)

如果portalimg类有多个元素,你可以简单地使用.each迭代器:http://api.jquery.com/each/

$(function() {
    $('.portalimg').each(function(index) {
        var img = $(this);
        if (img.width() > img.height()) {
            img.css('width','125px')
        } else {
            img.css('height','125px')
        }
    });
}

答案 1 :(得分:2)


$('.portalimg').each(function() {
  var pimgw = $(this).width();
    var pimgh = $(this).height();
    if (pimgw > pimgh) {
        $(this).css('width','125px')
    } else {
        $(this).css('height','125px')
    }
});

答案 2 :(得分:1)

这个怎么样:

$('.portalimg').each(function() {
    (($(this).width() > $(this).height())
    && ($(this).css('width','125px')) )
    || ($(this).css('height','125px'))
});

http://jsfiddle.net/DerekL/Qx4jF/

答案 3 :(得分:0)

您的循环错误,您应该使用

pimg = $('.portalimg').each( function() {;
    alert("success")
    var pimgw = $(this).width();
    var pimgh = $(this).height();
    if (pimgw > pimgh) { 
        $(this).css('width','125px')
    } else {
        $(this).css('height','125px')
    }
});

这将在所有查找对象上调用一个函数,文档中包含“.portalimg”类。

答案 4 :(得分:0)

可以试试这个。其他答案非常好。你和for和body的语法出了问题。你的意思是#body还是.body?

$(".portalimg").each(function(){ 

    var pimgw = $(this).width(),
        pimgh = $(this).height();

    if (pimgw > pimgh) {
        $(this).css('width','125px')
    }else{
        $(this).css('height','125px')
    }
});

答案 5 :(得分:0)

$('.portalimg').each(function() { var
    img = $(this),
    w = img.width(),
    h = img.height(),
    toModify = w > h ? 'width' : 'height';
    img.css(toModify, '125px');
}