Fancybox获取afterClose函数中单击的锚点/元素的id

时间:2014-02-27 08:17:01

标签: jquery fancybox fancybox-2

我正在使用fancybox登录表单。成功验证后,我正在执行一些代码并在afterClose回调中手动关闭fancybox。

问题是,如果使用关闭按钮[X]关闭fancybox,afterClose方法中的代码仍会运行。如何使用关闭[X]按钮检测我是否关闭了fancybox?或者我如何追踪当前的click?所以我可以决定是否运行我的代码。

我尝试了一些技巧,但仍然无效。

2 个答案:

答案 0 :(得分:2)

问题是fancybox(v2.x)关闭按钮没有ID,它只有,但是你可以绑定click事件到[X]按钮,如果按下[X]关闭按钮,则设置条件。

尝试捕获currentTarget事件的click变量,例如:

var eTarget;
jQuery(document).ready(function ($) {
    $(".fancybox").fancybox({
        afterShow: function () {
            // bind a click event to fancybox close button
            // set the value of the currentTarget to the eTarget variable
            eTarget=""; // reset variable
            $(".fancybox-close").on("click", function (event) {
                eTarget = event.currentTarget;
            });
        },
        afterClose: function () {
            // validate the eTarget variable 
            if ($(eTarget).hasClass("fancybox-close")) {
                // yes, we are closing fancybox with the [X] button
                // so close it, do nothing and return
                console.log("fancybox was closed using the X button");
                return;
            }
            // only if fancybox wasn't close using the X button
            // executed my validation and manual close
            console.log("perform form submission and validation here")
        }
    });
}); // ready

参见 JSFIDDLE

答案 1 :(得分:0)

试试这个,

console.log(this.element.context.id);