如何/在何处定义fancybox默认值?

时间:2011-08-15 20:03:12

标签: jquery fancybox

假设这是我的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();

它将自动拥有我的配置。

4 个答案:

答案 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',
    })
);

更多信息:http://api.jquery.com/jQuery.extend/

答案 3 :(得分:0)

我就是这样做的(根据the latest (fancybox3) documentation):

         $.fancybox.defaults.clickOutside = 'close'

         $.fancybox.defaults.slideShow = {
             autoStart : false,
             speed     : myGallerySlideshowSpeed
         }

等等。也就是说,我真的没有发起任何事情,我只是将我的项目标记为data-fancybox="gallery"并使用上面的代码来设置默认值。