2

我有一个不寻常的问题,并且从几个小时开始就一直在解决它。我的断点没有在函数中被击中,但功能仍然有效,这让我发疯。我已经用 Chrome/开发者工具和 Firefox/Firebug 都试过了。我以前从未有过这样的事情。

当我单击 New Conversation 按钮时,第一个断点命中。但是,当我单击通过 jquery .load() 出现的取消按钮时,断点没有命中。然而,它背后的功能会执行(div 被清空)。

请问我错过了什么?

function cancel_new_conversation(event){
    //2nd Breakppoint below this line doesn't get hit, but the empty() statement works.
    event.preventDefault();
    $('#new_conversation_div').empty();
}

function new_conversation(event){
    event.preventDefault();
    var url = $(this).attr("href") + "/";
    $('#new_conversation_div').load(url, function(){
       //1st Breakpoint gets hit.               
       $('#new_conversation_cancel_button').click(cancel_new_conversation);     
    }); 
}

$(document).ready(function (){      
  $('#new_conversation_button').click(new_conversation);
}

我在做什么会以某种方式破坏 javascript?

编辑:

警报的好主意。这是证据。也许是环境问题?我必须在另一台机器上尝试。

在此处输入图像描述 在此处输入图像描述

4

2 回答 2

3

昨天午饭后,在我无限的智慧中,我将原本要加载的部分 html$('#new_conversation_div').load(url, function()设计为带有标题和正文的完整 html。

因此,一旦它被加载到我的 div 中,html 标记就变得一团糟(两个标题,两个正文)

我将 javascript 文件从损坏的部分 html 移动到我的主 html 中,并从部分 html 中删除了标题和正文。现在我 .load() 部分 html,一切都按预期工作并且断点命中。很难找到。

希望这对其他人有帮助。

于 2012-11-03T12:57:21.467 回答
0

我可以在您的代码中看到的唯一问题是您在加载新对话时没有取消绑定 #new_conversation_cancel_button 上的单击事件。如果您使用 jquery >1.7,您应该测试以下代码:

function cancel_new_conversation(event){
    //2nd Breakppoint below this line doesn't get hit, but the empty() statement works.
    event.preventDefault();
    console.log("cancel_new_conversation");
    $('#new_conversation_div').empty();
}

function new_conversation(event){
    event.preventDefault();
    var url = $(this).attr("href") + "/";
    $('#new_conversation_div').load(url, function(){
       //1st Breakpoint gets hit.               
       $('#new_conversation_cancel_button').off('click').on('click',cancel_new_conversation);     
    }); 
}
$(document).ready(function (){      
  $('#new_conversation_button').on('click',new_conversation);
});

​
于 2012-11-02T18:21:13.967 回答