0

抱歉,我需要再问一次,因为我有一段工作代码,但我把它弄丢了。

谁能告诉我为什么这没有效果?

$(window).load(function (){
var imgs = $('.boxInner img');

if (imgs.length){
    $.each(imgs, function (index, item){
        var w = item.width(),
            h = item.height();

        if (w < h) { 
            item.css({display: "none"}); 
        }
    });
}
});

想法是看一组图像,比较宽度和高度,如果图像高于宽度,它就会消失。

谢谢。

4

2 回答 2

2

传递给each()回调的元素是原始 DOM 元素,而不是 jQuery 对象。

要调用类似height()orwidth()的 jQuery 方法,您需要使用$().

如果您在运行代码时查看它,浏览器的错误控制台将尝试告诉您这一点。

于 2013-10-23T18:36:22.730 回答
1

试试这个..你需要将你的项目引用包装在一个 jQuery Element 对象中:

$(window).load(function (){
    var imgs = $('.boxInner img');

    if (imgs.length){
         $.each(imgs, function (index, item){
              var w = $(item).width(),
                  h = $(item).height();

              if (w < h) { 
                  $(item).css({display: "none"}); 
              }
         });
    }
});

..

更新:

如何使用遍历each()方法:

http://api.jquery.com/each/

$(window).load(function (){
    var imgs = $('.boxInner img');

    if(imgs.length !== 0){
        imgs.each(function(index, item){

            var $item = $(item),
                w = $item.width(),
                h = $item.height();

            if (w < h) { 
                $item.hide(); 
            }
        });
    }

});

试试上面的.. 它还确保长度不等于零,并且只使用 jQuery hide() 方法

于 2013-10-23T18:43:39.177 回答