ソート可能な水平リストを実装しました。リスト内の各要素の LEFT css 値を更新したいと思います (すべての要素は div です)。残された財産は私たちにとって非常に重要なので、それを保持する必要があります。私はそれを行う方法を見つけることができませんでした。
現在、左の値がハードコーディングされているため、ソート可能なリストを並べ替えることができません。いつも同じになる。ユーザーがアイテムのドラッグを開始すると、左の値が自動的に変更されるため、ユーザーはアイテムが置き換えられていることがわかります。
これが私の例です:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>jQuery UI Sortable - Default functionality</title>
<script src="http://code.jquery.com/jquery-1.8.3.js"></script>
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
<style>
div {
display: block;
}
div.item {
position: absolute;
overflow: hidden;
height: 64px;
background-color: gray;
border: 1px solid black;
float: left;
}
#test {
position: fixed;
top: 70px;
left: 10px;
}
</style>
<script>
$(function() {
$("#sortable").sortable({
placeholder: "placeholder",
start : function(event, ui) {
var wid = parseInt(ui.item.width());
ui.item.data('orgWid', wid);
},
sort : function(event, ui) {
var wid = ui.item.data('orgWid');
$('#test').text(wid);
/**
* Here we should update the "left" css value of each element on list.
//for siblings of selected div
$(".placeholder ~ div").each(function() {
$(this).css("left", parseInt($(this).css('left')) + wid);
}
**/
},
cursor : 'crosshair'
});
$("#sortable").disableSelection();
});
</script>
</head>
<body>
<div>
<div id="sortable">
<div id="item_0" class="item" style="left: 0px; width: 176px;">176px</div>
<div id="item_1" class="item" style="left: 176px; width: 292px;">
292px</div>
<div id="item_2" class="item" style="left: 468px; width: 85px;">85px
</div>
</div>
</div>
<p id="test">-</p>
</body>
</html>