0

次のものだけで構成される基本的な HTML ページがあります。

<body id="body">
<script src="js/jquery-2.0.3.js"    type="text/javascript"></script> 
<script src="js/three.min.js"       type="text/javascript"></script> 
<script src="js/stats.min.js"       type="text/javascript"></script> 
<script src="js/application.js"     type="text/javascript"></script>
</body>

ページの本体として、index.htmlコンテンツapplication.jsは次のとおりです。

function init() {
    var container = $('div');
    container.attr('id', 'container');
    $('body').append(container);
    alert('Container: ' + $('#container').length);
}

$(function() {
    init();
});

これは明らかに非常に基本的なコードです。div を作成して body に追加します。ただし、alert呼び出しが返さ0れ、クロムを介して DOM ツリーを検査すると、div が追加されません。

スクリプト ファイルを<body>タグの末尾に追加init()し、jQueryready()ブロックから呼び出すと、なぜこのようなことが起こるのでしょうか? このような基本的で単純な作業のようです。

注: Chrome のコンソールでエラーがスローされていません

4

2 に答える 2

2
$('div')

<div>これにより、要素セレクターを使用してページ内のすべての要素が選択されます。
要素がない<div>ため、空の jQuery オブジェクトが返されます。

したがって、コードの残りの部分は効果がありません。

実際に新しい要素を作成したいようです:

$('<div />')
于 2013-08-18T15:14:46.003 に答える
2

あなたの行var container = $('div');はDIVを作成していません.1つを選択しています. コンテナを作成したい場合は、var container = $('<div></div>');

その結果、現在のコードは空の jQuery オブジェクトを返しますが、jQuery はそれらを適切に処理し、何もしないので気付かないでしょう。

于 2013-08-18T15:14:51.947 に答える