7

何らかの理由$("...").width()で、ドキュメントの準備ができた直後に間違った値を返しています。

私はこれらの値を見ています:

ドキュメントの準備ができた直後:

$(document).ready(function(){
  $("li.active a").width() //returns 76 - incorrect
});

$(document).ready(function(){
  $(window).load(function(){
    $("li.active a").width() //returns 59 - the correct value
  });
});

$(document).ready(function(){
  setTimeout(function(){
    $("li.active a").width() //returns 59 - the correct value
  }, 100);
});

ワードプレスのメニュー項目の幅を取得し、サイズを変更して、レスポンシブ デザインに常に収まるようにしています。この変更の原因となる画像やアセットはありません。

更新 以下の私のコメントを参照してください。読み込みに一瞬かかる埋め込みフォントのアセットがあったことが判明しました。

4

1 に答える 1

17

$(window).load最初の例の の欠如に関係している可能性があります。

「すべてのグラフィックスがまだロードされていなくても、HTML ドキュメントがロードされ、DOM の準備ができている場合、ドキュメントの準備完了イベントはすでに実行されています。ウィンドウがロードされる前に特定の要素のイベントをフックしたい場合は、$( document).ready は適切な場所です。" *

$(document).ready(function() {
 // executes when HTML-Document is loaded and DOM is ready
 alert("document is ready");
});

ウィンドウの読み込みイベントは、すべてのフレーム、オブジェクト、画像を含む完全なページが完全に読み込まれる少し後に実行されます。したがって、画像やその他のページ コンテンツに関係する関数は、ウィンドウまたはコンテンツ タグ自体の読み込みイベントに配置する必要があります。 " *

$(window).load(function() {
 // executes when complete page is fully loaded (all frames, objects and images)
 alert("window is loaded");
});

*引用元は4locです。

于 2013-03-27T20:21:11.893 に答える