colorbox在firefox中多次加载相同的文档

时间:2011-04-05 14:43:56

标签: jquery ajax colorbox

您好我有一个页面,它呈现来自AJAX请求的大量令牌。这是呈现内容的方法:

function renderTextView(documentId, manuscriptId) {
$("#textView").empty();
$(".token-display a").die();

$.each(window.g_cacheAllTokens, function(idx, token) {
    var html = renderToken(token, documentId, manuscriptId);
    $("#textView").append( html );
});

$(".token-display a").live('click', function() {
      var url = $(this).attr('href');
        $.fn.colorbox({ 
            opacity:  0.25,
            href:     url,
            open:     true,
            onClosed: function() { 
                reloadViews(documentId, manuscriptId);
            }
        }); // colorbox
        return false;
});

// enable tooltips for tokens
if( true == getEditorOption('showTooltips') ) {
    $(".token-display").tooltip();
}
} // renderTextView

对于每个呈现的标记,我设置了一个在“click”上打开颜色框的实时处理程序。在Chrome中它似乎表现得很好,但在Firefox中。一旦我打开一个颜色框然后关闭它,第二次打开它(屏幕中相同的一个或任何其他标记)它请求目标URL两次,如果我这样做三次,那么它确实执行了三次请求等等。

正如您可以看到颜色框关闭时,我重新加载视图,因此我获得了新的标记并刷新了处理程序。

这使我的应用程序在使用一段时间后无法使用,所以这是一个非常糟糕的问题。

我不知道它可能是什么,我甚至不知道如何调试它。

2 个答案:

答案 0 :(得分:2)

我还注意到,如果Colorbox内部显示的页面还包含Colorbox的JavaScript,则会发生这种情况。这至少是我的问题。无论您在Colorbox中加载哪个页面,都不得包含重复的JavaScript。

希望这可以帮助那些遇到类似问题的人。

答案 1 :(得分:0)

如果有人遇到类似的问题,我设法通过将点击处理程序从动态变为静态来解决它,如下所示:

$(".token-display a").click(function() {
// ...handler code...
});

而不是我以前的:

$(".token-display a").live('click', function() {
// ...handler code...
});

似乎Firefox出于某种原因两次添加处理程序。