我正在使用fancybox登录表单。成功验证后,我正在执行一些代码并在afterClose
回调中手动关闭fancybox。
问题是,如果使用关闭按钮[X]
关闭fancybox,afterClose
方法中的代码仍会运行。如何使用关闭[X]
按钮检测我是否关闭了fancybox?或者我如何追踪当前的click
?所以我可以决定是否运行我的代码。
我尝试了一些技巧,但仍然无效。
答案 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);