1

URL から画像をスクレイピングしようとしていますが、ユーザーが特定のサイズの画像のみを選択できるようにしています。これを Nokogirl でうまく機能させるのに問題があり、画像を選択するページが表示されたときにクライアント側で jquery を使用して処理することを考えました。何らかの理由で、100%機能していません

.select_product は、ユーザーが選択する画像をレンダリングする画像クラスの名前です。

$(document).ready(function () {
    $("img").load(function () {
        $(".select_product").each(function () {
            var width = $(this).width();
            if (width < 100) {
                $(this).hide();
            }
        });
    });
});

この js は機能しますが、実際には一部の画像が確かに高い場合でも、何らかの理由で常に「this」の幅が 100 未満であると見なされます。

4

1 に答える 1

1

loadイベントは画像ごとに 1 回発生します。10 枚の画像があると仮定すると、10 回発生し、最初の画像が読み込まれると、他の画像がまだ読み込まれていない場合でもハンドラーが実行されます。代わりに、オブジェクトのloadイベントをリッスンできます。window

window.onload = function() {
    $(".select_product").filter(function() {
       return $(this).width() < 100;
    }).hide();
}

ただし、画像をロードしてから非表示にするのではなく、サーバー側で画像の幅を読み取ります。またload()、jQuery 1.8 以降の jQuery イベント メソッドは非推奨であることに注意してください。

于 2013-09-17T01:45:09.737 に答える