2016-04-17 6 views

答えて

2

コードはすぐパーサがHTML(あなたがdeferasync属性を使用unles)の残りの部分を続行する前にブラウザが、スクリプトタグを解析して実行します。したがって、イベントハンドラをフックするコードは、が存在する前にを実行するので、何も接続されません。

ちょうど終了</body>タグの前に、HTMLの終わりscriptを移動

<!DOCTYPE HTML> 
<html> 
<head> 
</head> 
<body> 
<div class="a"> <p> aaa</p></div> 
<!-- ...rest of page here... --> 
<script src="jquery-2.0.3.js"></script> 
<script> 
    $("div.a").click(function(){ 
     $(this).slideUp(); 
    }); 
</script> 
</body> 
</html> 

そのように、HTMLで定義された要素は、スクリプトの実行時のように存在します。ここでは、YUI Best Practices for Speeding Up your Website

スクリプトの実行場所を制御しない場合は、jQueryのreadyコールバックを使用することをお勧めします。

+0

なぜreadyメソッドが2番目に優れていますか? – bugwheels94

+0

それは動作します、ありがとうが、私はそれを取得しません。 cssがhtmlの前に定義されている場合、なぜCSSのプロパティがdiv htmlで動作するのですか? –

+0

@ user1533609:スクリプトをページの早い方に置くことは、パターンに反するためです。スクリプトが最後にある場合、 'ready'は不要です。 –

関連する問題