2012年10月31日 星期三

HTML與JQuery處理Event事件的注意事項(一)


首先,我們先看一段用HTML處理Event的程式碼,將以下的程式碼貼到Dreamware或是文字編輯軟體,然後執行此HTML檔,在瀏覽器觀看其結果。然後把Script 前區段遮掉,改把Script 後區段打開,然後執行此HTML檔,在瀏覽器觀看其結果。會發現結果是一樣的,沒有任何差別,就是在按鈕Click之後,在DIV裡面顯示被按了幾下。


<!doctype html> 

<html lang="en">
<head>
    <meta charset="utf-8" />
    <title>jQuery (document).ready 教學</title>
    <script src="http://code.jquery.com/jquery-1.8.2.js"></script>
    
    <!-- Script 前區段 -->
    <script>
var divClickCount = 0;
function BtnClick()
{
    $(".OutDiv").text( "Count = " + divClickCount );
    divClickCount++;
}   
    </script>
    
    <!-- CSS 區段 -->    
    <style type="text/css">
        .OutDiv
        {
            width:600px;
            height:400px;
            border:solid;
            cursor:n-resize; 
        }​
    </style>

</head>



    <!-- Body 區段 -->

<body>
    <div class = "OutDiv"></div>​    
    <button class = "btnCount" onClick="BtnClick()" >Counter</button>
</body>
</html>

    <!-- Script 區段 -->

    <!--
<script>
var divClickCount = 0;
function BtnClick()
{
$(".OutDiv").text( "Count = " + divClickCount );
divClickCount++;
}   
    </script> -->


---------------------------------------------------------------------------------------------------------------




再來,我們改用JQuery來處理事件,改成在Script區段註冊Event函式,並完成函式內容。如以下程式碼,你會發現,這次執行之後,點按鈕不會在DIV顯示訊息了。如果把前區段遮掉,改把後區段打開,發現,就正常了。




<!doctype html> 
<html lang="en">
<head>
    <meta charset="utf-8" />
    <title>jQuery (document).ready 教學</title>
    <script src="http://code.jquery.com/jquery-1.8.2.js"></script>
    
    <!-- Script 前區段 -->
    <script>
var divClickCount = 0;

$(".btnCount").click(function(e)
{
    $(".OutDiv").text( "Count = " + divClickCount );
    divClickCount++;
});     
    </script>
    
    <!-- CSS 區段 -->    
    <style type="text/css">
        .OutDiv
        {
            width:600px;
            height:400px;
            border:solid;
            cursor:n-resize; 
        }​
    </style>

</head>

    <!-- Body 區段 -->
<body>
    <div class = "OutDiv"></div>​    
    <button class = "btnCount" onClick="BtnClick()">Counter</button>
</body>
</html>

    <!-- Script 後區段 -->
    <!-- 
    <script>

var divClickCount = 0;


        $(".btnCount").click(function(e)
        {
            $(".OutDiv").text( "Count = " + divClickCount );
            divClickCount++;
        });     

    </script>

    -->

為什麼會這樣?這是因為,如果把Script寫在前面,則網頁載入時,會先載入Script這塊,但此時JQuery所要的ID元件根本就還沒產生,因為還沒執行到Body,所以才會異常。能有什麼解決的方式嗎?有,請看 HTML與JQuery處理Event事件的注意事項(二)

沒有留言:

張貼留言