0

问候,

我正在使用 facebox 弹出 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 上挂上我自己的一些代码,以便进行测试和警报。

因此,在我网页上的 js 中,我执行了以下操作:

<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('something cool');' 实例仍然在那里监听关闭事件。

有什么办法解决这个问题吗?谢谢 !

4

1 回答 1

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 库。

于 2009-10-02T14:02:39.433 回答