3

これは奇妙な状況です。すべての依存関係がその前にロードされていることを確認しますが(私の場合はjQueryライブラリのみです)、私のスクリプトはヘッドセクション(つまり<head>)にロードされると機能しませんが、フッター(上のどこ​​かに)にロードされると機能します</body>鬼ごっこ)。

それは十分に明確ではないので、実際の例を挙げましょう。これはウェブページです。ここで、ページのソースを表示します。ここで、これが私が話しているコードです。

<script type='text/javascript'>
/* <![CDATA[ */
var yjlSettings = {"gifUrl":"http:\/\/whatthenerd.com\/wp-content\/themes\/reddlec\/images\/ajax-loader.gif","autoGrow":"enable"};
/* ]]> */
</script>
<script type='text/javascript' src='http://whatthenerd.com/wp-content/themes/reddlec/js/no-reload-comments.js?ver=3.3.2'></script>

ユーザーがページをリロードせずにコメントを投稿できるようにする必要があります。(ページのコメントを自由にテストしてください:))-しかし、そうではありません。なんで?

</body>PS:前に言ったように、前述のスクリプトがタグの直前にロードされると、すべてが機能します。何が紛争を引き起こしているのか、私にはよくわかりません。

4

1 に答える 1

5

スクリプトはすぐに DOM 内の要素を検索します。

var $commentlist = jQuery('.commentlist');
var $respond = jQuery('#respond');

スクリプト内にある 2 つの例。これらの項目は、ヘッダーが読み込まれる時点では存在しませんが、本文の最後に到達するまでには存在します。これをヘッダーからロードする場合は、これをドキュメント準備完了ブロックでラップする必要があります。

jQuery(document).ready(function($) {
  // Code using $ as usual goes here.
});

これにより、ドキュメントが完全に読み込まれ、DOM が構築されるまでコードの実行を遅らせることで、ページの上部で安全に読み込むことができます。

readyオンラインの詳細: http://api.jquery.com/ready/

于 2012-06-06T17:13:26.170 に答える