2017-09-26 2 views
2

モーダルの読み込みを維持しようとしていますが、Jquery Lazyをブートストラップ4モーダルで使用しています。私はページロードにロードされないモーダルを得ることができますが、私が実行する問題は、1つのモーダルがアクティブになっているとき、それらがすべてロードされるときです。私はそれが起きないようにしておき、各モーダルは起動時にのみロードしたい。私は300以上のモーダル(カルーセル・モーダルを生み出す画像)を見ていて、誰かが定期的に各モーダルを通過するのではないかと考えています。どんな助けもありがとうございます。起動時のロードモーダルのみ(一度に1つ)

$('.modal').on("show.bs.modal", function() { 
 
    $('img.lazy').each(function() { 
 
    var img = $(this); 
 
    img.attr('src', img.data('src')); 
 
    }); 
 
});
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css"> 
 
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js"></script> 
 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap.min.js"></script> 
 
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jquery.lazy/1.7.5/jquery.lazy.min.js"></script> 
 
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jquery.lazy/1.7.5/jquery.lazy.plugins.min.js"></script> 
 
<div class="col-lg-3 col-md-3 col-sm-6"> 
 
    <div class="img-thumbnail image"><img data-toggle="modal" src="https://placeimg.com/200/120/any" data-target="#modal" class="img-fluid"> 
 
    </div> 
 
    <h4>...</h4> 
 
</div> 
 
<div class="modal fade" id="modal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true"> 
 
    <div class="modal-dialog" role="document"> 
 
    <div class="modal-content"> 
 
     <div class="modal-header"> 
 
     <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 
 
        <span aria-hidden="true">&times;</span> 
 
        </button> 
 
     </div> 
 
     <div class="modal-body"> 
 
     <div class="container-fluid carousel-container"> 
 
      <div class="container"> 
 
      <div class="row"> 
 
       <div class="col"> 
 
       <div class="carousel slide carousel-fade" id="carousel-"> 
 
        <div class="carousel-inner"> 
 
        <div class="active carousel-item" data-slide-number="0"> 
 
         <img data-src="https://placeimg.com/450/250/any" class="lazy img-thumbnail"></div> 
 
        </div> 
 
       </div> 
 
       </div> 
 
      </div> 
 
      <hr> 
 
      
 
      <!--/Slider--> 
 
      <div class="row"> 
 
      <div class="col"> 
 
       <a class="carousel-selector" data-slide="0"><img data-src="https://placeimg.com/75/42/any" class="lazy img-thumbnail"></a> 
 
      </div> 
 
      </div> 
 
     </div> 
 
     </div> 
 
     <div class="modal-footer"> 
 
     <button type="button" class="btn btn-outline-dark btn-sm" data-dismiss="modal">Close</button> 
 
     </div> 
 
    </div> 
 
    </div> 
 
</div>

答えて

1

以上の特定の機能を使用する必要があります。これは完全に機能します。

$('.modal').on("show.bs.modal", function() { 
$('.lazy', this).Lazy({bind: 'event', chainable: false}); 
}); 

また、実際のイメージがロードされるときに、2つを切り替えますsrc属性とjquery.lazyからプラグインを使用して画像にロードするGIFを追加することができます。したがって、実際の画像はdata-src="actual image page"を使用し、同じimgタグをローディングGIFに入れて入れてくださいsrc="loading.gif"

関連する問題