IE6でも7でも動いてくれるのと
なかなか使い勝手も良さそう
なのでメモ。jQueryを使った
コンテンツボックス内の自動
読み込みを実装します。
去年くらいの記事ですけど見逃してたのでメモ。
Facebookをやられてる方はピンと来るかも。下までスクロールすると自動で次のコンテンツが読み込まれますが、それをボックス内で実装したものです。基本的にどのブラウザでも動くみたいです。
Scrolling Dynamic Content box
このボックス内でスクロールすると自動で次のコンテンツが読み込まれ、アイテムの数も表示されます。というか、見たほうが早いですね。
デモ
ここにテキスト1
ここにテキスト2
ここにテキスト3
ここにテキスト4
ここにテキスト5
ここにテキスト6
ここにテキスト7
ここにテキスト8
コード
コードです。
$('document').ready(function(){ updatestatus(); scrollalert(); }); function updatestatus(){ //ロードしたアイテムの数を表示 var totalItems=$('#content p').length; $('#status').text('現在、 '+totalItems+' 個を表示しています。'); } function scrollalert(){ var scrolltop=$('#scrollbox').attr('scrollTop'); var scrollheight=$('#scrollbox').attr('scrollHeight'); var windowheight=$('#scrollbox').attr('clientHeight'); var scrolloffset=20; if(scrolltop>=(scrollheight-(windowheight+scrolloffset))) { //新しいアイテムのロード $('#status').text('続きを読み込んでいます・・'); $.get('読み込むファイルのパス', '', function(newitems){ $('#content').append(newitems); updatestatus(); }); } setTimeout('scrollalert();', 1500); }
動作にはjQueryが必要です。テキストは適当に変更してください。
HTML
<div id="mainbody" > <div id="scrollcontainer"> <div id="scrollbox" > <div id="content" > <p>ここにテキスト1</p> <p>ここにテキスト2</p> <p>ここにテキスト3</p> <p>ここにテキスト4</p> <p>ここにテキスト5</p> <p>ここにテキスト6</p> <p>ここにテキスト7</p> <p>ここにテキスト8</p> </div> </div> <p><span id="status" ></span></p> </div>
$.getで指定したファイルがスクロールする事で読み込まれます。数値はvar totalItems=$(‘#content p’).length;で指定しているのでリストで表示したいならpをliなどに変更すればいいっぽい。
ブログのサイドバーにcssが影響してますが気にしないで下さい。
デモではhtmlを読み込んでいるので同じ内容が繰り返されていますが、用途は動的なコンテンツになりそうですね。検索ページとかアーカイブにもいいかも。
[note]【追記】
お友達のヤクモさんが改良してくれましたよ。処理スピードも速いです。ぜひご覧下さい。
ボックス内をスクロールすると自動でコンテンツをロードするjQueryをちょっと変えてみた[/note]