Jquery事件绑定/解除绑定和lib挂钩

时间:2009-10-02 13:14:42

标签: jquery events popup facebox

问候,

我正在使用facebox popup jquery插件。 在他们的JS中他们有以下事件

/*
   * Bindings
   */
  $(document).bind('close.facebox', function() {
    $(document).unbind('keydown.facebox')
    $('#facebox').fadeOut(function() {
      $('#facebox .content').removeClass().addClass('content')
      hideOverlay()
      $('#facebox .loading').remove()
    })  
  })

它只是关闭弹出窗口。 我想在这个close.facebox上挂一些我自己的代码,以便测试和提醒。

因此,在我的网页上,我做了以下内容:

<script type="text/javascript">
    // listen to close action on popup


    // submit request
    $("#request-submit").click(function(){

        // Show popup
        jQuery.facebox('something cool');

        // Close Popup Hook
        $(document).bind('close.facebox', function() {
            alert("close action");
        });

    });
</script>

看起来不错,但问题是它不能完美运行:

首次弹出时,关闭操作会在关闭时显示警报。 在Seconde弹出窗口中,关闭操作显示两个警报。 在第三个弹出窗口中,关闭操作会一个接一个地显示三个警报。

你明白了,它似乎是旧的'Query.facebox('酷酷');'实例仍在那里收听关闭事件。

有什么方法可以解决这个问题? 谢谢!

1 个答案:

答案 0 :(得分:0)

我做了以下,

On the JS lib

$(this).trigger('pre_close.facebox');

// Close alert
$(document).bind('pre_close.facebox', function() {
    alert("close action");
    $(document).unbind('pre_close.facebox');
});

但这不太好,因为我必须破解默认的facebox lib。