我在我的应用程序中使用fancybox.现在要处理close事件,我们写了类似的东西:
$(".fancybox").fancybox({onClose:function(){alert('blah');}}
如此文档页面所示:
http://fancyapps.com/fancybox/#docs
但是我想为所有fancybox编写一些常见且全局的东西,每次都可以为任何fancybox运行.我怎么做?简而言之,我不想在每个fancybox上编写onClose的代码,也不希望它依赖于class,id(例如,在这种情况下为.fancybox).我怎么做?我试着写:
$.fancybox({onClose:function(){alert('blah');}}
但它不起作用,从文档中看起来这是以程序方式打开的功能.
解决方法
我不确定这是否是最好的解决方案,但我会选择一个发布/子模式,所以,在你的fancybox中你应该做那样的事情.
$(".fancybox").fancybox( { onClose:function(){ $(window).trigger('fancyboxClosed'); } });
然后,代码中的某个地方:
$(window).on('fancyboxClosed',function(){ // Your global function for fancybox closed });
我不太了解你的目的,但请记住,你总是可以传递一个命名函数而不是一个匿名函数,所以你总是触发相同的函数.
如果您想根据每个fancybox制作不同的东西,上面的示例应该是可行的方法.
此外,您可以将事件附加到您想要的任何对象.为方便起见,只是使用窗口
编辑
您也可以编辑您的fancybox来源(编辑1.3.4)只需添加$(window).trigger(‘fancyboxClosed’);到953附近.