web-dev-qa-db-ja.com

外部HTMLからのjQueryロードボディ

JQueryを使用していて、外部HTMLファイルから本文を読み込もうとしています。

divをロードしようとすると機能します。

$('body').load('example.html #content');

しかし、私はこのようなことをすることができません:

$('body').load('example.html body');

22
Diogo Cardoso

から http://api.jquery.com/load

jQueryは、ブラウザの.innerHTMLプロパティを使用して、取得したドキュメントを解析し、現在のドキュメントに挿入します。このプロセス中に、ブラウザは<html>、<title>、<head>要素などの要素をドキュメントからフィルタリングすることがよくあります。その結果、.load()によって取得された要素は、ドキュメントがブラウザによって直接取得された場合とまったく同じではない場合があります。

上記を読むと、ブラウザが本文のinnerHTMLのみを返している可能性があります。これは明らかにbodyを要求することと同じであるはずですが、bodyが見つからないため、エラーが発生している可能性がありますか?

別のブラウザを試すことをお勧めします。

9
Adam Hopkinson

全身をロードしたい場合は、$('body').load('example.html');で十分です。

そうでない場合は、その理由を説明できますか?

とにかく、スティーブによって提供されたソリューションは正しいものです。

3
Réjôme

セレクターなしでloadを使用すると、<html><head>、および<body>タグが削除されますが、<head>および<body>の子はすべてそのまま残ります。 、タイトル、スクリプト、スタイルタグを含みます。ただし、セレクターを使用すると適用されます afterbodyタグが削除されます したがって、それと照合することはできません。

代わりに、すべてのボディコンテンツを別のタグでラップし、代わりにそのタグを選択します。

<html><head><title>Hello!</title</head>
<body>
  <div id="jquery-load-point">
    ... <!-- rest of body content -->
  </div>
</body>
</html>

これで、次のようにロードできます。

$("#destination").load("http://my.url/to/page #jquery-load-point");
2
jpaugh

必要なのはiframeを追加することだと思います。 URLをそのsrcプロパティに渡します。 HTML全体がこのiframeに読み込まれます。あなたの問題のためのクリーンでシンプルな解決策。ではごきげんよう :-)

2
webcoder

1.5ではなくjQuery1.5.1を使用していることを確認してください。 1.5のロード機能には問題がありました。私は jquery .load()が機能しません で同様の質問に答えました

もう1つは、さまざまなブラウザーで試して、ブラウザーの問題ではないことを確認することです。 Chromeでは、ローカルホストから作業するときに、調整を行わずにロードを使用することはできません。

1
Hussein