2009-05-26 6 views
8

Ich habe ein Problem mit fancybox.
Ich möchte eine Funktion schreiben, die beim Öffnen der Fancybox ausgeführt wird. Wie und wann die Funktion aufrufen?Jquery - Fancybox und Rückruf

Beispiel:

function myFunc() { 
    alert("Opened!"); 
} 

$('.content a').fancybox({ 
    'hideOnContentClick': false , 
    'callBackOnShow': myFunc(), // This not working! It call function when page is loaded 
    'frameWidth': 920, 
    'frameHeight': 530 
}); 
+3

Wenn Benutzer hierher kommen und den Rückruf für die neue Version von Fancybox suchen: Überprüfen Sie das Attribut "onComplete". – AsTeR

+6

Für die fancybox Version 2 oder höher wurde sie in afterLoad geändert. http://fancyapps.com/fancybox/#docs – coderates

Antwort

24

Statt myFunc() Verwendung myFunc. In JavaScript bedeutet eine Funktion mit parens (und/oder args), dass Sie sie aufrufen möchten. Ein Funktionsname, ohne sie bedeutet, Sie wollen einfach nur eine Referenz auf diese Funktion (was wahrscheinlich ist, was fancybox von Ihnen will)

2

Es sollte sein: -

function myFunc() { 
    alert("Opened!"); 
} 

$('.content a').fancybox({ 
    'hideOnContentClick': false , 
    'callBackOnShow': myFunc, // no brackets 
    'frameWidth': 920, 
    'frameHeight': 530 
}); 

Oder können Sie eine anonyme Funktion machen ..

.
$('.content a').fancybox({ 
    'hideOnContentClick': false , 
    'callBackOnShow': function() { alert('hello'); }, 
    'frameWidth': 920, 
    'frameHeight': 530 
}); 
2

Eigentlich auf die Dokumentation überprüft, haben Sie einen Tippfehler in der Optionsliste ...

Sie haben callBackOnShow aber es solltesein 0 (Kleinbuchstaben b)

2
'callbackOnShow': myFunc 

Kleinbuchstaben b als die Optionen sind Groß- und Kleinschreibung, und keine Klammern auf myFunc, wie Sie die Funktion als Option übergeben wollen, nennen Sie es nicht.

10

Dies funktioniert

$("#element").fancybox({ 
    onStart  : function() { 
     return window.confirm('Continue?'); 
    }, 
    onCancel : function() { 
     alert('Canceled!'); 
    }, 
    onComplete : function() { 
     alert('Completed!'); 
    }, 
    onCleanup : function() { 
     return window.confirm('Close?'); 
    }, 
    onClosed : function() { 
     alert('Closed!'); 
    } 
}); 
+0

Super Post, Tankx – Hearaman

+2

Ich frage mich, warum die ursprünglichen Callbacks nicht funktioniert: http://fancyapps.com/fancybox/#docs – mirelon

9

Die neueste Art und Weise, wie es Arbeit machen wird mit After-Show oder beforeShow:

$("a#registrace").fancybox({ 
    beforeShow : function() { 
    alert('its working!'); 
    validate_reg_form(); 
    } 
}); 

Ich lade Anmeldeformular durch Ajax und ich brauche Form-Validierung zu ermöglichen. In beiden Fällen (vorher und nachher) ist der Inhalt bereits geladen.

0

Da Ihr Titel "Jquery - fancybox and callback" lautet, können Sie eine vollständige Liste der Rückrufoptionen für das fancybox 2-Plugin finden, die Sie unter der Registerkarte Callbacks finden.

http://fancyapps.com/fancybox/#docs

Wenn Ihr die alte fancybox verwenden, vielleicht zu fancybox2 Upgrade als das neue Plugin bessere Funktionen hat, mit mehr Kontrolle.