OK、あなたのスライダーは、テーブル構造を必要とするある種の JavaScript ギズモであると仮定します。したがって、最初に理解する必要があるのは、既存のテーブルに行を挿入する方法です。
画像が 1 つしかない最初のページの読み込み後に、次の HTML を生成するとします。
<table id='slider'>
<tr>
<td class='si'>
<img.... >
</td>
</tr>
</table>
JavaScript を使用して、そのテーブルに新しい行を挿入できる必要があります。この時点で jquery を使用していると仮定する必要があります。ここにいくつかのjqueryがあります:
$('#slider:last-child').append("<tr><td>Hi!</td></tr>");
そのjqueryを実行すると、DOMには次が含まれます。
<table id='slider'>
<tr>
<td class='si'>
<img.... >
</td>
</tr>
<tr><td>Hi!</td></tr>
</table>
同じ JavaScript をもう一度実行してから、次のようにします。
<table id='slider'>
<tr>
<td class='si'>
<img.... >
</td>
</tr>
<tr><td>Hi!</td></tr>
<tr><td>Hi!</td></tr>
</table>
これは jquery コードの重要な部分ですが、どこに行き、どのように修正するのでしょうか?
さて、次の画像を取得する各 AJAX 呼び出しの後に、その jquery コードを呼び出す必要があります。解決しなければならない次の問題は、AJAX を使用して一度に 1 つずつ、すべての画像を反復処理する方法です。
これには、ブラウザーで維持される JavaScript 変数 (すべての画像へのインデックスである変数) が含まれます。少なくとも、ページの読み込み時に最大数の画像をキャプチャする必要があります。あなたはこれを行うことができます:
show.html.erb:
<script type='text/javascript'>
$(document).ready(function() {
var maximage = <%= @maximage %>;
var curimage = 0;
});
</script>
これを機能させるには、@maximage を設定する必要があります。
アプリ/コントローラー/pages_controller.rb:
class PagesController < ApplicationController
before_filter :prep_images , :only => [:show]
def prep_images
@maximage = @page.slider_items.length
end
end
したがって、dom ready イベントが発生すると、erb 拡張機能のおかげで、HTML には以下を含むスクリプト セクションが含まれます。
var maximage = 12;
var curimage = 0;
12枚の画像があるとします。
この時点で、名前空間の衝突について言及する必要があります。maximage は、使用する他の JavaScript ライブラリで使用される変数である可能性が非常に高いです。その場合は、これに対処する必要がありますが、競合はないと仮定します。
OK、私はしばらくこの記事を作成してきました。私が正しい道を進んでいると思われる場合はお知らせください。残りの詳細を記入します。