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()要素は、jQuery オブジェクトではなく、生の DOM 要素です。

height()またはのような jQuery メソッドを呼び出すwidth()には、 を使用して 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 に答える