http://jqueryui.com/demos/sortable/#placeholder の例では、プレースホルダーは、アイテムをドラッグしたときに表示されるオレンジ色のボックスです。
この要素はplaceholder
オプションを使用して調整できますが、ここで説明するように要素のクラスを変更することしかできません。 http://jqueryui.com/demos/sortable/#options
この要素をさらにカスタマイズしたいと思います。 placeholder
オプションに関数を提供できるのと同じ方法で、helper
オプションに関数を提供します。
これを行うには、何を変更する必要がありますか(例:sortable.js)?
Ui.sortable.js(1.7.2)のソースを見ると、placeholder
関数とelement
関数を使用して、update
をチートしてオブジェクトに設定できます。 element
関数はプレースホルダーdomオブジェクトを返すために使用され、update
関数を使用すると、そのサイズを修正することができます(以下の場合、sortable内の__createPlaceholder
_関数をチェックアウトできます)デフォルトの実装が何をするのかを見たい)。
たとえば、次の例では、Wordtestをプレースホルダーとしてリスト項目を作成します(実際のdomオブジェクト(_[0]
_)jQueryオブジェクト自体ではありません):
_$("#sortable").sortable({
placeholder: {
element: function(currentItem) {
return $("<li><em>test</em></li>")[0];
},
update: function(container, p) {
return;
}
}
});
_
ソースを正しく読んでいる場合、element
関数に現在のアイテム(jQueryオブジェクト)を渡す必要があり、this
はsortable
自体を指す必要があります(つまり、$("#sortable")
この場合には)。 update
には、すべてのオプション、要素など、およびplaceholder
自体を保持するオブジェクトである「コンテナ」が渡されます。
これは文書化されていないハックであることに注意してください、したがって明らかにサポートされず、jQuery UIの次のバージョンで変更される可能性があります...しかし、あなたが話していれば、それはあなたにとって有用かもしれませんとにかく直接_ui.sortable.js
_を編集します。
お役に立てば幸いです。
私が見つけたよりハック的なアプローチ:start
オプションを使用してプレースホルダー要素を変更できます。次のように
$("#sortable").sortable({
start: function (e, ui) {
// modify ui.placeholder however you like
ui.placeholder.html("I'm modifying the placeholder element!");
}
});