2010-01-24 8 views

cevap

10

Kullandığınız sürüm, belgelere uymuyor; Kaynağa baktım ve seçeneklerin isimlerinin çevrimiçi dokümanlardan farklı olduğunu gördüm. Sadece 1.3RC2 ile aşağıdaki test:

$(document).ready(function() { 

    function myStartFunction() { alert('fancy box opened'); } 

    $("a#inline").fancybox({ 
     'onStart': myStartFunction 
    }); 
}); 

aradığınız seçenek 'onStart' dir - myStartFunction içinde uyarı Ben kutusunu açmak her zaman söner. Bu seçeneği değiştirdiklerinde emin değilim, ancak altta kullandığınız herhangi bir sürümün kaynağına bakabilir ve seçeneğin ne olması gerektiğini görebilirsiniz.

DÜZENLEME

Sadece çift v1.2.5 kontrol - Kullandığım sürüm - ve geri aramalar gerçekten farklı adlandırılır. Dediğim gibi callbackOnStart değil 1.3

+0

Haha, http://fancybox.net/dev/130/ kaynağında görebiliyorsanız, ikinci paramdan 'onStart' ve vb. Bu şekilde işe yaramaz. Çok teşekkürler Erik ^^ –

3

bahsediyorum. Fancybox, kullanıcı tanımlı işlevleri (kendiniz yapmanız gereken) çağıran geri aramalara sahiptir. gibi:

function myClose() 
{ 
    alert('close'); 
} 

function myStart() 
{ 
    alert('start'); 
} 

$("a#single_image").fancybox({ 
    'callbackOnClose': myClose, 
    'callbackOnStart': myStart 
// etc, etc.. 
}); 

Alternatif bunu içeride bir şey olup olmadığını görmek için fancy_content div kontrol edebilir. (eğer varsa, fan kutusu açık).

if ($('#fancy_content:empty').length > 0) 
{ 
    // Is empty 
} 
2

bu benim için iş gibi görünüyor, 1,25 ile çalışır ancak:

 isLoaded : function(){ 
      return $('#fancybox-content').html()!=''; 
     } 
8

deneyin yöntemlerini

beforeLoad, // Before loading 
afterLoad, // After loading 
beforeShow, // Before changing in current item 
afterShow, // After opening 

ince Bu kod çalışma kullanmak

$(".fancybox").fancybox({beforeShow:function(){alert('blah');}}); 
+0

OP diyor 'Ben sürüm 1.3.0 RC2' – JFK

4

Eğer fancybox yerine açık üzerine ateşlenir bir olayın (açık olup olmadığını belirlemek için bir yol arıyorsanız fancybox) sonra fancybox v2 olarak $.fancybox.isOpen özelliğini kullanabilirsiniz. Belgelenmemiş (en azından herhangi bir referans bulamadım) ama işe yarıyor.

Örnek:

if(!$.fancybox.isOpen) { 
    $.fancybox.open({ 
     href: '#newsletter-campaign-popup', 
     height: 385, 
     width: 510, 
     type: 'inline' 
    }); 
} 

bir açıksa üzerinde ikinci Fancybox açılmasını önleyen, örneğin.

1

sen daha iyi ve daha evrensel bir çözüm olabilir kodunu izleyerek FancyBox için kullandığınızı birden div 's varsa:

if ($('.fancybox-opened').length == 0) { 
    //there is no fancybox opened at all 
} 

Not Ayrıca fancybox içerik fancybox kapalı olsa bile, her zaman boş olmayabilir.

12

$.fancybox.isOpen (BOOL) fancybox açık olup olmadığını belirtir.

+0

hakkında daha iyi ve güzel çözüm hakkında konuşuyorum, cevap –

+1

Evet, ama korkarım sadece Fancybox 2 ile çalışır – tillsanders

İlgili konular