1

我在触发 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事件没有被触发!

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

谢谢指教!

4

1 回答 1

1

afterClose不会因为您没有设置而被解雇。你这样打开fancybox

$.fancybox(project);

...但为了触发afterClose,您必须将其设置为该函数中的 API 选项,例如

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

JSFIDDLE

于 2013-04-11T20:25:02.327 回答