3

jqueryスターターのImなので、間違っている場合は許してください:)

コンテンツをさまざまな位置に配置することでこのスクリプトが機能する理由を知りたいだけですが、最善を尽くして、スクリプトheadはドキュメントのセクションに保持されると思います。コンセプトを説明してください。

ワーキングコード

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Example 2</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>

</head>

<body>

<p>
</p>

<script type="text/javascript">
jQuery("p").html("Check if jQuery Supports Ajax method : "+ jQuery.support.ajax );
</script>

</body>
</html>

動作しない

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Example 2</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
jQuery("p").html("Check if jQuery Supports Ajax method : "+ jQuery.support.ajax );
</script>
</head>

<body>

<p>
</p>

</body>
</html>
4

3 に答える 3

8

2番目のインスタンスでは、コードが<p>DOMツリーに解析される前に実行されるため、それがまだ機能している間は、出力テキストを入れる場所がありません。つまり、jQuery("p")要素に一致しないため、.html()「何もしません」。

これは、DOMが完全に解析されるのを待つことで修正できます。

jQuery(function() {
    jQuery("p").html(...);
});

または<p>、やなどの既存のものに依存しない出力メカニズムを使用する。alert()console.log()

于 2012-09-15T10:11:14.643 に答える
3

さて、あなたのブラウザは最初に<head>セクションをロードしているようです。したがって、2番目の例ではp要素がありません。

どちらの場合も、コードをでラップする必要があります$(function(){ ... })

于 2012-09-15T10:11:23.033 に答える
1

要素の前にスクリプトを配置する<body>と、DOM ツリーがロード/解析される前にスクリプトが実行されます。したがって、<p>要素は存在せず、見つかりません。あなたはできる:

  • <body>タグの後にスクリプトを配置します(最初の例のように)

  • readyまたは、イベントが発生した後に関数を呼び出すことができます。

    $(document).ready(function() {
      jQuery("p").html("Check if jQuery Supports Ajax method : "+ jQuery.support.ajax );
    });
    
于 2012-09-15T10:13:20.340 に答える