fancybox 2 afterClose不触发

时间:2013-04-11 19:06:54

标签: jquery fancybox fancybox-2

我有一个问题触发afterClose fancybox 2.1.4事件。

我有一个像这样的初始化脚本

$.fancybox({
  maxWidth    : 900,
  maxHeight   : 600,
  fitToView   : false,
  width       : '70%',
  height      : '70%',
  autoSize    : false,
  closeClick  : false,
  openEffect  : 'none',
  closeEffect : 'none',
  afterClose  : function() {
    alert('Hi!');
    return;
  }
});

我有一个DIV触发一个用HTML数据填充DIV的函数

<div onclick="projectDetail('+project.id+')">View Details</div>

填充fancybox内容DIV的触发器功能就是这个

function proyectDetail(id) {
  var project = $('#project');

  var result = '<h2>Lorem ipsum dolor sit amet</h2>\
                 <p>\
                   Lorem ipsum dolor sit amet, consectetur adipiscing elit.\
                 </p>';
  project.append(result);

  $.fancybox(project);
}

问题是 afterClose 事件不会被触发!

我需要在fancybox关闭后单击该div,打开fancybox并清除内容,因为弹出窗口可能会填充不同的数据,具体取决于给定的项目ID。

谢谢你的建议!

1 个答案:

答案 0 :(得分:1)

afterClose因为您没有设置任何内容而无法解雇。你以这种方式打开fancybox

$.fancybox(project);

...但是为了触发afterClose,您必须将其设置为该功能中的API选项,如

$.fancybox(project, {
    afterClose: function () {
        alert("you have closed fancybox");
    }
});

参见 JSFIDDLE