我对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
});
答案 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,因为新插件具有更好的功能,并且具有更多控制权。