2

私は異常な問題を抱えており、何時間もの間それに取り組んでいます。私のブレークポイントは関数内でヒットしませんが、関数は機能します。それは私を夢中にさせています。Chrome/開発者ツールとFirefox/Firebugの両方でこれを試しました。私はこれまでこのようなものを持っていませんでした。

[新しい会話]ボタンをクリックすると、最初のブレークポイントがヒットします。しかし、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

昨日の昼食後、無限の知恵で$('#new_conversation_div').load(url, function()、ヘッダーと本文を備えた完全なhtmlとして設計された、ロードする予定の部分的なhtmlがありました。

したがって、それが私のdivにロードされると、htmlマークアップは完全に混乱しました(2つのヘッダー、2つのボディ)

javascript ファイルを破損した部分的な html からメインの html に移動し、部分的な html からヘッダーと本文を削除しました。部分的な html を .load() したので、すべて期待どおりに動作し、ブレークポイントがヒットします。見つけるのは非常に困難でした。

これが他の誰かに役立つことを願っています。

于 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 に答える