Jquery – fancybox和回调

我有fancybox的问题。
我想编写一个在fancybox打开时运行的函数。 如何以及何时调用该function?

例:

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 }); 

而不是myFunc()使用myFunc 。 在javascript中,带有parens(和/或args)的函数意味着你想要调用它。 没有它们的函数名称意味着您只需要对该函数的引用(这可能是fancybox想要的)

这很有效

 $("#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!'); } }); 

如何使其工作的最新方式是使用afterShow或beforeShow:

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

我正在通过ajax加载注册表单,我需要启用表单validation。 在这两种情况下(之前和之后),内容已经加载。

实际上,在检查文档时,您的选项列表中有一个拼写错误…

你有callBackOnShow但它应该是callbackOnShow (小写b)

它应该是:-

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

或者,您可以创建一个匿名函数…

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

小写字母b,因为选项区分大小写,并且myFunc上没有括号,因为您希望将该函数作为选项传递,而不是调用它。

当您的标题显示“Jquery – fancybox and callback”时,您可以在选项卡回调下找到fancybox 2插件的完整回调选项列表。

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

如果您使用旧的fancybox,可能升级到fancybox2,因为新插件具有更好的function,具有更多控制。