作成中の Web ページに動的に読み込まれた HTML コンテンツをいじっています。私が欲しいのは、javascript/jquery と ajax 要求を使用して動的に Web ページにインポートされるスニペットを含む HTML ファイルのリストを用意することです。これにより、たとえば、いくつかのブログ投稿を個別のファイルとして保存し、複数の投稿を含むページを動的に構築できます。
以下は、タイトルと小さな表だけのスニペットの例です。
CSS :
#swimTimes2{
background-color: #eee;
}
HTML ソース :
<div id="itemContainer">
<div id='swimTimes2' class='item'>
<h1> Swim Times </h1>
<table>
<tr class="tableHead">
<td>Weekdays</td><td>Weekends</td><td>Holidays</td></tr>
<tr>
<td>7:00am-9:00am</td><td>10:30am-8:00pm</td><td>11:00am-4:00pm</td></tr>
<tr>
<td>11:00am-2:00pm</td></tr>
<tr>
<td>4:00pm-10:30pm</td></tr>
</table>
</div>
</div>
を使用すること$.get()
で、上記のスニペット ファイルの内容を読み込んでから、jquery を使用して必要な html スニペット (この場合は #itemContainer の内容) を検索できることがわかりました。
ジャバスクリプト
$(document).ready( function(){
loadContent('content/content_1.html');
});
function loadContent(fileName){
$.get(fileName, function(data){
var htmlContents = $(data).find("#itemContainer").children('.item').html();
var id = $(data).find("#itemContainer").children('.item').attr('id');
$('#content').append($('<div class="item" />').attr('id', id).html(htmlContents));
var styleEl = $(data).find("style");
$('head').append(styleEl);
});
}
したがって、$.get()
ハンドラー関数の最初の 3 行が機能します。スニペットをインポートして、HTML ページに配置できます。ここで、スニペットからメイン ページに css スタイルもインポートしたいと思います。この例では、アイテムに灰色の背景を指定しました。これは、メインの html ページから取得できないプロパティです。
私が抱えている問題は、スニペットのスタイル要素がメイン ページにインポートされていることはわかっていますが、含まれている css ルールがインポートされた html に適用されないことです。私は何が欠けていますか?