私の問題を説明する前に、私が試みていることを正確に概説したいと思います
ここで私がやろうとしているのは、ユーザーが押すことができるボタンに基づいて、さまざまなアイテムのセットをコンテンツ フローにロードすることです。ボタンによってトリガーされる関数を既に設定しました。この関数は、AJAX 経由で (jQuery $.get を使用して) 渡した名前の値に関連付けられた項目を取得し、itemcontainer の ID を持つ div に配置しました。これはうまくいきます。
function getPictures(Gallery){
$.get( "getimages.php", {name : Gallery}, function( data ) {
for(x in data){
$("#itemcontainer").append(data[x]);
}
addPictures();
}, "json" );
return false;
}
関数がその内部で別の関数を呼び出していることがわかります ( addPictures() )。この関数は、ContentFlow の addItem メソッドを介して itemcontainer の ID を持つ div から ContentFlow カルーセルに実際に画像を追加します。
function addPictures(){
clearBox();
var it = ajax_cf.items;
// Grabs pictures from 'itemcontainer' and iteratively adds them to 'flow'
var ic = document.getElementById('itemcontainer');
var is = ic.getElementsByTagName('img');
for (var i=0; i< is.length; i++) {
ajax_cf.addItem(is[i],"end");
}
}
addPictures() 関数の内部には、以前に宣言した clearBox() という関数が含まれていることがわかります。clearBox() は、コンテンツ フロー内のアイテムをループして削除することになっているため、ContentFlow カルーセル内のアイテムの古いギャラリーを削除してから、新しいアイテムを読み込むことができます。
これは、ContentFlow オブジェクト ajax_cf のプロパティであるリスト アイテム (items と呼ばれる) をループ処理することで機能します。各アイテムのインデックス 0 にあるリスト要素でメソッド rmItem を作成して実行します。これが clearBox 関数です。
var ajax_cf = new ContentFlow('ajax_cf');
function clearBox(){
alert("clear");
var it = ajax_cf.items;
var len = it.length;
for(var i=0; i<len; i++){
ajax_cf.rmItem(0);
}
return false;
}
必要に応じて、ソースまたはドキュメントをここから入手できます。 http://www.jacksasylum.eu/ContentFlow/
前もって感謝します!