2017-09-11 36 views
0

ギャラリーには同じページに複数のギャラリーがあります(Venobox)。いくつかのギャラリーには何百もの写真があるので、私は各ギャラリーの最初の3つのサムネイルしか表示しません。ライトボックス(Venobox)ギャラリーに動的に要素を追加する

<a class="venobox loadmore loadmore1" title="" data-gall="gal1" data-vbtype="ajax" data-bid="x-y-z-1" href="/show.php?pid=1"><img src="thumb1.jpg" /></a> 
<a class="venobox loadmore loadmore1" title="" data-gall="gal1" data-vbtype="ajax" data-bid="x-y-z-1" href="/show.php?pid=2"><img src="thumb2.jpg" /></a> 
<a class="venobox loadmore loadmore1" title="" data-gall="gal1" data-vbtype="ajax" data-bid="x-y-z-1" href="/show.php?pid=3"><img src="thumb3.jpg" /></a> 

<div class="hidden showmore1"></div> 

<a class="venobox loadmore loadmore2" title="" data-gall="gal2" data-vbtype="ajax" data-bid="x-y-z-2" href="/show.php?pid=4"><img src="thumb4.jpg" /></a> 
<a class="venobox loadmore loadmore2" title="" data-gall="gal2" data-vbtype="ajax" data-bid="x-y-z-2" href="/show.php?pid=5"><img src="thumb5.jpg" /></a> 
<a class="venobox loadmore loadmore2" title="" data-gall="gal2" data-vbtype="ajax" data-bid="x-y-z-2" href="/show.php?pid=6"><img src="thumb6.jpg" /></a> 

<div class="hidden showmore2"></div> 

ユーザーは(任意のサムネイルのクリックを)いくつかのギャラリーを表示するために開始し、クリックされた画像が表示されなければならず、バックグラウンドでスクリプトがこのギャラリーのすべてのサムネイル(画像へのリンク)をロードする必要があります。

<div class="hidden showmore1"> 
<a class="venobox loadmore loadmore1" title="" data-gall="gal1" data-vbtype="ajax" data-bid="x-y-z-1" href="/show.php?pid=7"><img src="thum7.jpg" /></a> 
<a class="venobox loadmore loadmore1" title="" data-gall="gal1" data-vbtype="ajax" data-bid="x-y-z-1" href="/show.php?pid=8"><img src="thumb8.jpg" /></a> 
<a class="venobox loadmore loadmore1" title="" data-gall="gal1" data-vbtype="ajax" data-bid="x-y-z-1" href="/show.php?pid=9"><img src="thumb9.jpg" /></a> 
</div> 

問題

私は任意のサムネイルをクリックすると、スクリプトは画像の残りの部分をロードしますが、クリックされた画像は表示されません。新しく読み込まれたサムネイルだけをクリックできますが、最初の3つのサムネイルをクリックすることはできません。同時に、新しく読み込まれた画像を開いて「前の」矢印をクリックすると、最初の3枚の写真も見ることができます。

これはすべてPrettyPhotoスクリプトで動作しますが、PrettyPhotoは反応がありませんので、私はVenoboxを実装することにしましたが、この問題があります。

スクリプト:venoboxから

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

    var handler = function(e){ 
    e.preventDefault(); 
    e.stopPropagation(); 
    var href = $(this).attr("href"); 
    var dbid = $(this).attr("data-bid"); 
    var myarr = dbid.split("-"); 
    var ftip = myarr[0]; 
    var fnum = myarr[1]; 
    var falb = myarr[2]; 
    var fpoid = myarr[3]; 
    var order_by = myarr[4]; 

    if($(this).hasClass('loadmore')) { 
     $.ajax({ 
     method: "POST", 
     url: "/loadmore.php", 
     data: {poid:fpoid,alb:falb,typ:ftip,num:fnum,order_by:order_by}, 
     success: function(d){ 

      $('#showmore'+fpoid).html(d); 
      $('.loadmore'+fpoid).removeClass('loadmore'); //removing class so that new images load only once 

      $("a[data-gall^='gal"+fpoid+"'").venobox(); //reactivating venobox 
      $("a[data-gall^='gal"+fpoid+"'").filter("a[href='" + href + "']").click(); 

     } 
     }); 
    } 
    } 
})}); 

答えて

0

。クリックをトリガーする方法は $( "#firstlink")です。venobox()。trigger( 'click');

上記のコードに使用できるコールバックがあります(上記リンクの詳細)

関連する問題