2017-01-10 10 views
2

私はこのプロジェクトを使用しています:https://github.com/cowboy/jquery-throttle-debounceBen Almanのdebounce jQueryの実装方法は?

私のコードは動作しますが、デバウンスは無視されています。 したがって、画像のロードごとにwaterfall関数が呼び出されますが、2秒の遅延は考慮されていません。エラーは表示されません。

これを実装する正しい方法は何ですか? 私はこれを3時間続けていますが、解決策を見つけることはできません。

(function($) { 
 
    $(document).ready(function(e) { 
 

 
    var $waterfall = $('.waterfall'); 
 
    if ($waterfall.length) { 
 
     $waterfall.waterfall({}); 
 
    } 
 

 
    // sort the waterfall when images are loaded 
 
    var $waterfall_images = $waterfall.find('img'); 
 
    $waterfall_images.each(function(j, image) { 
 
     var $img = $(image); 
 

 
     $img.load(function() { 
 
     $.debounce(2000, $waterfall.waterfall('sort')); 
 
     }); 
 

 
    }); 
 

 
    }); 
 
})(jQuery);
<ul class="waterfall"> 
 
    <li class="waterfall-item"> 
 
    <a href="hidden link" title="hidden title"> 
 
     <img alt="hidden alt" title="hidden title" data-srcset="hidden in this example" data-src="also hidden in this example" src="still hidden in this example" data-sizes="(min-width:440px) 300px, 95vw" class=" lazyloaded" sizes="(min-width:440px) 300px, 95vw" 
 
     srcset="think I'll hide this one too"> 
 
     <span class="waterfallImgOverlay"></span> 
 
    </a> 
 

 
    </li> 
 
</ul>

答えて

2

あなたは、参照を割り当てていない、メソッドを呼び出しています。最も簡単なことは、関数でラップすることです。 2つ目は、デバウンスがメソッドを返すので、返すものを格納し、そのメソッドを呼び出す必要があります。

(function($) { 
    $(document).ready(function(e) { 

    var $waterfall = $('.waterfall'); 
    if ($waterfall.length) { 
     $waterfall.waterfall({}); 
    } 

    var waterfallSort = $.debounce(2000, function(){ $waterfall.waterfall('sort'); }); 

    // sort the waterfall when images are loaded 
    var $waterfall_images = $waterfall.find('img'); 
    $waterfall_images.each(function(j, image) { 
     var $img = $(image); 

     $img.load(waterfallSort); 

    }); 

    }); 
})(jQuery); 
+0

それはまだ遅れを尊重していない... それは約500 MS、別の500 MSと3と別の500のMS後の画像の最後のセットの後に第二セット後の画像の最初のセットをロードします。遅延は2秒に設定されていますが、それをもっと高く設定しても何も変わりません。 –

+0

ああ、うんざり....申し訳ありませんが、私はまだコーヒーを持っていませんでした。私はそれを修正します。 – epascarello

+0

それが修正されました。 – epascarello

関連する問題