ギャラリーには同じページに複数のギャラリーがあります(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();
}
});
}
}
})});