Jquery - fancybox和回调

时间:2009-05-26 12:36:36

标签: jquery fancybox

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

7 个答案:

答案 0 :(得分:24)

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

答案 1 :(得分: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!');
    }
});

答案 2 :(得分:9)

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

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

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

答案 3 :(得分:3)

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

您有callBackOnShow但它应该是callbackOnShow(小写字母b)

答案 4 :(得分: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
});

答案 5 :(得分:2)

'callbackOnShow': myFunc

小写字母b,因为选项区分大小写, 并且myFunc上没有括号,因为你想把这个函数作为一个选项传递,而不是调用它。

答案 6 :(得分:0)

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

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

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