2011-07-28 28 views
2

我是Jquery的新成員。我在我的代碼中遇到了問題,我非常困惑,在爲點擊事件編寫jQuery代碼時哪種方式是正確的。請提前幫助我解釋謝謝!如何使用Jquery寫點擊事件?哪種方法是正確的?

第一種方法:

<script type="text/javascript"> 

$('a').click(function(){ 
    alert('you clicked a tag !!! '); 
}); 

</script> 

和第二種方法:

<script type="text/javascript"> 
     $(document).ready(function(){ 
      $('a').click(function(){ 
       alert('you clicked a tag !!! '); 
      }); 
     }); 

</script> 

當我寫測試2的方法,只是第二個是成功的,並顯示一個警告,但第一個無可奈何。另外我在http://api.jquery.com/click/上評論,第一個是他們寫樣本的方式,但它運行成功,這讓我感到困惑。

<script> 
    $("p").click(function() { 
     $(this).slideUp(); 
    }); 
    $("p").hover(function() { 
     $(this).addClass("hilite"); 
    }, function() { 
     $(this).removeClass("hilite"); 
    }); 
</script> 

回答

6

第一個不成功的原因是沒有a元素已被加載(只要您的腳本放置在頁面的標題中)。

使用$(document).ready(..)使您的代碼在您的DOM準備好進行操作時運行,從而允許jQuery將點擊事件附加到您的a元素。

通常,在觸發事件之前,您不應該開始運行DOM操作代碼,以確保您需要的所有內容都可用。

2

只要瀏覽器到達HTML的那一部分,第一種方式立即運行您的代碼。

第二種方式,它等到文檔準備就緒,然後應用您的代碼。

發生的事情是,當以第一種方式寫入的代碼得到執行時,DOM未完全加載。這意味着可能沒有任何<a>元素將您的代碼應用於。這就是爲什麼最好使用第二種方式(以便在DOM準備就緒時執行)。

0

在第一個示例中,您嘗試將單擊事件綁定到文檔未準備好時的鏈接。如果需要執行任何與DOM相關的操作,則必須使用第二個選項。

0

在第一種方法中,元素必須先在javascript之前聲明。 但在第二種方法中,這並不重要,因爲在文檔準備就緒時即運行JavaScript,即完成加載。

1

您需要將所有jquery包含在$(document).ready()中,以確保在啓動綁定事件之前加載了所有資源並處理了DOM。但是,如果將腳本標記放置在HTML頁面的底部(沒有$(document).ready()),那麼jQuery可能會像加載所有html和javascript並處理DOM一樣工作。

儘管最好的做法是把你所有的jquery包含在$(document).ready()中