2012-08-15 108 views
0

我一直在一段web應用程序的一段時間工作。 JavaScript文件已經變得相當大,它有很大一部分負責初始化和處理jQuery UI元素和事件。爲了使事情更具可讀性和可維護性,我將UI初始化程序和事件處理程序拆分爲單獨的文件。該文件在邏輯文件之前加載,如螢火蟲的net標籤所確認。奇怪的jQuery UI執行延遲

由於我已經分離了UI元素,我注意到按鈕和複選框已從單擊單擊觸發器更改爲雙擊,之後它們的事件首次觸發。之後,單擊執行事件。爲了仔細檢查,我在事件處理程序中設置了一條日誌語句,直到第二次點擊纔打印出來。

這是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 click事件作爲

$("#checkboxes").buttonset(); 
$("#paneLabel").text("Hide Panels"); 

$("#panel").click(function(){ 
    console.log("pane click"); 
    handlePanelButtonClick(); 
}); 

首先點擊什麼也不做,並記錄聲明不顯示。第二次點擊觸發事件。

有沒有辦法解決這個問題?

+1

你能否提供一些代碼,它可以是任何東西......糟糕的設計,不好的js練習......沒什麼可討論的 – kidwon 2012-08-15 21:56:22

+0

對不起,以爲這會比其他任何事情都更爲出名。看到我的編輯 – Jason 2012-08-15 22:27:42

回答

1

沒有現場實例,我很難解決這個問題。 也許這是一些默認的瀏覽器的行爲...... 或點擊的觸發器是在第一次點擊不可

試試這個

​​
+0

這樣做!謝謝 – Jason 2012-08-15 22:54:38