私はしばらくの間、Webアプリのセクションに取り組んできました。javascriptファイルは非常に大きくなり、そのかなりの部分がjQueryUI要素とイベントの初期化と処理を担当しています。読みやすく保守しやすくするために、UI初期化子とイベントハンドラーを別のファイルに分割しました。このファイルは、firebugのnetタブで確認されているように、ロジックファイルの前にロードされます。
UI要素を分割したので、ボタンとチェックボックスが、イベントが初めて発生する前に、シングルクリックトリガーからダブルクリックに変更されていることに気付きました。その後、シングルクリックでイベントが実行されます。再確認するために、イベントハンドラー内にロギングステートメントを設定しましたが、2回目のクリックまで出力されません。
これは、htmlページのスクリプト宣言です。
<script type="text/javascript" src="../js/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="../js/jquery-ui-1.8.21.custom.min.js"></script>
<script type="text/javascript" src="../js/ajaxupload.3.5.js"></script>
<script type="text/javascript" src="../js/modernizer.js"></script>
<script type="text/javascript" src="../js/ui_initialization.js"></script>
<script type="text/javascript" src="../js/setCoordinates.js"></script>
<script type='text/javascript>
$(document).ready(function(){
onload();
});
<script type="text/javascript" src="../js/nav.js"></script>
onload
setCoordinatesで定義され、ui_initilizationでsetupElements
起動します。
たとえば、htmlでチェックボックスを次のように定義します
<div id='checkboxes'>
<input type="checkbox" id="panel" class="checkbox"/>
<label for="panel" id='paneLabel' class="checkbox"></label>
</div>
クリックイベントを次のように処理しui_initilization.js
ます
$("#checkboxes").buttonset();
$("#paneLabel").text("Hide Panels");
$("#panel").click(function(){
console.log("pane click");
handlePanelButtonClick();
});
最初のクリックは何もせず、loggingステートメントは表示されません。2回目のクリックで、イベントが発生します。
これを修正する方法はありますか?