假设这是我的fancybox配置:
$(".fancybox").fancybox({
'transitionIn':'fade',
'transitionOut':'fade',
'speedIn':150,
'speedOut':150,
'changeSpeed':150,
'changeFade':150,
'overlayOpacity':0.1,
'overlayColor':'#000000',
'padding':0,
'margin':20,
'titleShow':false,
'centerOnScroll':true
});
但是,我想做的是以某种方式将配置定义为fancybox默认值,因此当我绑定一个元素时,我只能这样做:
$(".newElement").fancybox();
它将自动拥有我的配置。
答案 0 :(得分:19)
Fancybox有一组内部默认值,可以轻松覆盖。
对于Fancybox 1.3,请使用:
jQuery.extend(jQuery.fn.fancybox.defaults, {
hideOnOverlayClick: false, //
overlayOpacity: 0.75, // <-- just an example
overlayColor: '#222' //
});
对于Fancybox 2.0,删除了“.fn”:
jQuery.extend(jQuery.fancybox.defaults, {
type: 'ajax' // <-- for example
});
当然,首先需要加载Fancybox javascript文件。
答案 1 :(得分:2)
根据此处的文件:http://fancybox.net/api
您可以将选项作为键/值对象传递给fancybox()函数,或者在FancyBox JS文件的底部修改它们
答案 2 :(得分:2)
您可以使用JQuery Extend将两个或多个对象的内容合并在一起。
这里是配置:
var fancyboxConfig = {
'transitionIn':'fade',
'transitionOut':'fade',
'speedIn':150,
'speedOut':150,
'changeSpeed':150,
'changeFade':150,
'overlayOpacity':0.1,
'overlayColor':'#000000',
'padding':0,
'margin':20,
'titleShow':false,
'centerOnScroll':true
};
然后你可以直接使用:
$(".newElement").fancybox(fancyboxConfig);
或合并/覆盖它们:
$(".newElementNoEffect").fancybox(
$.extend({}, fancyboxConfig, {
openEffect: 'none',
closeEffect: 'none',
})
);
答案 3 :(得分:0)
我就是这样做的(根据the latest (fancybox3) documentation):
$.fancybox.defaults.clickOutside = 'close'
$.fancybox.defaults.slideShow = {
autoStart : false,
speed : myGallerySlideshowSpeed
}
等等。也就是说,我真的没有发起任何事情,我只是将我的项目标记为data-fancybox="gallery"
并使用上面的代码来设置默认值。