jQuery UIソート可能なプラグインを使用して、小さなギャラリーで写真を並べ替えることができます。動的コンテンツでソート可能
$(function() {
$("#area").sortable({
items: '.sort-wrapper',
cursor: "move",
handle: ".photo-handler",
opacity: 0.5,
scroll: true,
scrollSensitivity: 100,
scrollSpeed: 5,
revert: 100,
tolerance: "pointer",
update : function() {
var order = $('#area').sortable('serialize');
$.ajax({
type : 'POST',
url : '/file.php',
data : order
});
}
}).disableSelection();
同じページで、写真を動的に追加したり削除したりします。 PHPスクリプトはdiv
のHTMLコードを画像リンクとボタン "remove"と "move"(ソート可能ハンドラ)を返します。
例:
<div class="sort-wrapper">
<a href="photo001.jpg"><img src="photo001m.jpg" alt=""></a>
<button type="button" class="remove-this-photo">Remove</button>
<button type="button" class="photo-handler">Move</button>
</div>
問題は、私は新しいファイルを追加したり、#area
からファイルを削除すると作業ソート可能駅です。私は解決策を探していた、sortable('refresh')
メソッドを見つけたが、それは私のために働いていない。
#area
に新しい写真を追加するスクリプトは非常に標準的です。私は$.ajax({})
と.done
、.fail
、.always
の方法を使用します。 私がアップロードし、新しいファイルを開始するときsortable('destroy')
メソッドを使用して、アップロードが完了した後、このような何かをするために管理:
.always(function() {
$("#area").sortable();
});
上記のコードは再び#area
をソート可能になりますが、私はそれを設定するには、もう一度すべての設定をコピーする必要があります方法。 ソート可能にバインドして、動的コンテンツをロードした後、またはすべての設定をsortable()
の外に保存して、同じページで再び使用できるようにするにはどうすればいいですか?
私は試しましたが動作しません。エラーはなく、コンソールに警告はありません。何もない。私は '#area'にコンテンツを追加/追加するための関数を使用していないので問題があると思います。動的コンテンツは、ファイルを追加/削除した後、アルバムのユーザーに追加されたすべての写真(HTML構造)を編集するPHPスクリプトから来ます。私は 'sortable( 'refresh')という例を見てきましたが、JS/jQueryのappendまたは類似の関数を使ってコンテンツを追加することに基づいています。 – Qrzysio