2012-11-02 30 views
2

我有一個非常規的問題,並且從小時開始工作。我的斷點沒有在功能內部受到打擊,但功能起作用,它讓我瘋狂。我已經使用Chrome /開發人員工具和Firefox/Firebug嘗試了此操作。我以前從未有過這樣的事情。JS斷點沒有被擊中,但代碼執行

當我點擊按鈕新對話時,第一個斷點點擊。 但是,當我點擊取消按鈕,通過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?

編輯:

好主意與警報。這裏是證明。也許它是一個環境問題?我必須在另一臺機器上嘗試它。

enter image description here enter image description here

+0

您是否在函數中有警告,只是爲了檢查它是否是調試器/代碼執行問題? –

+2

我的懷疑是你有這個代碼的不止一個副本,並且斷點在一個沒有運行的副本上。我試着給你認爲正在運行的代碼添加一個'debugger;'語句,清除緩存並重新運行它 - 這樣你就可以看到你正在查看的源代碼是否得到更新(你看到'debugger; '語句),所以如果不是,'debugger;'語句會停止* *運行的代碼。如果你正在編輯你正在查看的代碼,這並不會對你有所幫助,但是... –

+0

你是否在jQuery中設置了斷點empty(),只是爲了從callstack中看到第二個空是否被觸發你的功能? –

回答

3

在我無窮的智慧午餐昨天之後,我有我的部分HTML,我的意思用$('#new_conversation_div').load(url, function()設計爲頭一個完全成熟的HTML加載和身體。

因此,一旦它被裝載到我的DIV,HTML標記完全成了一個爛攤子(兩個頭,兩個機構)

我把從損壞的部分HTML的JavaScript文件到我的主要html和刪除頁眉和從部分HTML的身體。現在,我加載()的部分HTML,它所有的預期和斷點命中。這很難找到。

希望這可以幫助別人。

0

唯一的問題我可以在你的代碼中看到的是,你不加載新的談話時對#new_conversation_cancel_button解除綁定click事件。 如果您使用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); 
}); 

​