2011-02-15 5 views
5

Ben küçük bir div, bir fancybox grubunda bulunan her doldurur özel bir resim galerisi var. Fancybox - Ajax Resim Galerisi

Eğer birini tıklayın (bu FancyBox açılır) ve ilk "sayfa" konulu resimler arasındaki geçiş yapmak Önceki/Sonraki basabilirsiniz zaman. Sayfalar arasında geçiş yapmak için, fantezi kutusunu kapatmanız ve sayfaları değiştirmeniz ve ardından yeni bir küçük resmi açmanız gerekir. Bu yeni fotoğraf dizisi ajax üzerinden alındı.

bahsettiğimi tam olarak ne size göstermek için, http://www.speedcountry.com/mSpeed323/Mazda_MAZDASPEED3

nasıl sayfaları geçmek ve görüntülerin sonraki set yük Fancybox kullanabilirim?

cevap

4

O FancyBox içinde herhangi bir iç yöntem vardır görünmüyor, bu yüzden eklentiyi değiştirmek gerekecek. Küçük bir değişiklik yapma ve demo yayınlama özgürlüğünü aldım - demoda, bir FancyBox açılır penceresindeki herhangi bir resmi açın, ardından klavyede Enter tuşuna basın. Tüm görüntüleri galeriye yükleyecek ve ilkinden başlayacaktır. temelde if (array)... satır ekleyin, sonra bir işlev parametre olarak "dizi" ekleyin Yani

$.fancybox.pos = function(pos, array) { // array parameter added 
    if (busy) { 
     return; 
    } 

    if (array) { currentArray = array; } // new line 

:

Modifiye hat 887, daha sonra 892 önce bir satır ekleyin.

Kullanmak için, FancyBox açıkken pos işlevini çağırın.

// pos(index of image, jQuery object of gallery objects) 
$.fancybox.pos(0, $('#examples a[id]')); 

* Not: Başlangıçta ben sadece $('a[id]') kullanılan ve içinde fantezi kutu oldu görüntüyü dahil Bu demo dan kodudur.


Güncelleme: Dediğiniz Yani olduğu gibi, ajax ... Ben sadece görüntü URL'lerin listesini alıyorsanız tahmin ediyorum kullanarak daha fazla görüntülerde yüklüyorsunuz.

<div id="ajax-loaded" style="display:none"> 
<a href="#" title="image1 title"><img src="image1.jpg"></a> 
<a href="#" title="image2 title"><img src="image2.jpg"></a> 
... 
<a href="#" title="imageN title"><img src="imageN.jpg"></a> 
</div> 

Sonra jquery dizisi ikinci Paramtre olarak $.fancybox.pos işlevine $('#ajax-content img') nesneleri yapabilir ve başlangıç: Bir url başlayarak, oluşturmak ve gizli bir alanda sayfaya bu görüntüleri eklemek gerekir ilk görüntüde (sıfır)

// ajax complete, add images to gallery 
$.fancybox.pos(0, $('#ajax-loaded a')); 

Güncelleme 2. ile: sana bir görüntü başlığını dahil etmek istiyorsanız gerekli olduğunu gördük sonra bağlantıları ve jQuery seçicinin yukarıdaki HTML tamamladı.

+0

Burada mantığınızı görüyorum ama birazcık kafam karıştı (ve demo benim için çalışmıyor). Dizi argümanında ne geçiyorum? "JQuery nesnenin galeri nesnelerini" detaylandırabilir misiniz? – pws5068

+0

Hiya, demo web sitelerinde fantazi dosyaları bağlandığından çalışmayı durdurdu. Sadece tüm bağlantıları değiştirdim ve css ekledim, şimdi çalışmalı. $ .fancybox.pos' ile ikinci bit, "goto" resmi gibi bir dahili fancybox işlevidir. # Tüm yaptığım, kendiniz eklediğiniz biriyle geçerli diziyi (jQuery nesne dizisi) değiştirmekti. – Mottie

+0

Tüm yardımlarınız için teşekkürler, ödül kazananlar – pws5068

1

benim cevaplar here yılında FancyBox bazı faydalı linkler gönderdiniz. Lütfen kontrol et onları.

bunu yararlı bulamazsanız, beni düzeltin lütfen. Uygulamayla ilgili sorun olup olmadığını

arada, kodu gönderin.

Teşekkür ederiz.

1

prepGallery()'un sonuna $("#profileGallery .vehiclePictures:first").click() eklediniz. Böylece AJAX çağrınızdan sonra, fotoğraf otomatik olarak "tıklar".

+0

Açıkça tıklanmışsa, galerideki ilk fotoğraf için bir etkinlik olur. Nasıl "n" resmini tıklarlarsa ve sayfadaki sonuncusuyla (fancybox oklarıyla) ... ajax araması yaparlarsa nasıl değiştirebilirim? – pws5068

+0

@ pws5068 Geçerli görüntünün son olup olmadığını kontrol etmek için onStart etkinliğini kullanabilirsiniz, böylece [bu] gibi bir şey yapabilirsiniz (https://gist.github.com/854863). – Haochi