8

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

例子:

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

7 回答 7

24

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

于 2009-05-26T12:39:25.900 回答
10

这有效

$("#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!');
    }
});
于 2011-01-21T18:39:53.960 回答
10

使其工作的最新方法是使用 afterShow 或 beforeShow:

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

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

于 2012-09-09T13:13:16.613 回答
3

实际上,在检查文档时,您的选项列表中有错字...

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

于 2009-05-26T13:08:05.217 回答
2

它应该是:-

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
});
于 2009-05-26T13:04:37.173 回答
2
'callbackOnShow': myFunc

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

于 2009-05-26T13:11:11.170 回答
0

正如您的标题所说的“Jquery - fancybox 和回调”,您可以在选项卡回调下找到 fancybox 2 插件的完整回调选项列表。

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

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

于 2013-07-26T13:49:51.843 回答