jQuery:fancybox如果关闭

时间:2010-10-23 13:20:20

标签: jquery fancybox

FancyBox jquery问题

如果你按X关闭它我想得到警告(“你忘了什么......”)。

我该怎么做?

            $("a#uploadImage").fancybox({
            'titleShow'     : false,
            'width':    560,
            'height':   620,
            'autoDimensions': false,
            'overlayOpacity': 0.6
            });

4 个答案:

答案 0 :(得分:5)

默认函数是$.fancybox.close所以我可能会倾向于做......

$.fancybox.originalClose = $.fancybox.close;
$.fancybox.close = function() {
    // Do whatever you want. Then do the default behavior:
    $.fancybox.originalClose();
};

这是一种破解,但它的优点是不需要对库代码或原始标记进行任何修改,不需要您直接操作库定义的事件处理程序,并自动调用您的代码而不管盒子如何关闭。

要仅更改一个特定框的行为,最好将modal属性设置为true(这将禁用所有内置方法关闭框),然后您可以添加自己的“保存”或“关闭”按钮,无论您想要什么。该框永远不会自动关闭,但您可以在准备好使用$.fancybox.close()功能时将其关闭。

答案 1 :(得分:5)

有一个回调'onCleanup',所以:

$("a#uploadImage").fancybox({
    'titleShow'     : false,
    'width':    560,
    'height':   620,
    'autoDimensions': false,
    'overlayOpacity': 0.6m,
    'onCleanup' : function() {
        return window.confirm('Close?');
    }
});

答案 2 :(得分:2)

我看到它的唯一方法,取出默认的关闭按钮,然后放一个。

<a href="#" id="close_fancybox"><img src="x.png" /></a>

<script>
    $('#close_fancybox').click(function(){
        var confirmation = confirm("You forgot something...?");
        if(confirmation) {
              return false;
        } else {
              $.fancybox.close();
              return false;
        }
    });
</script>

答案 3 :(得分:0)

打开jquery.fancybox-1.3.2.js并转到第910行,您可以看到花式框的关闭功能。在那个地方

$.fancybox.close = function() {

    alert("hai");

    if (busy || wrap.is(':hidden')) {

        return;
    }