답변:
ui
이벤트에 제공된 객체 를 사용할 수 있습니다 . 구체적으로 stop
이벤트 , ui.item
속성 및 을 원합니다 .index()
.
$("#sortable").sortable({
stop: function(event, ui) {
alert("New position: " + ui.item.index());
}
});
실제 데모를 볼 수 있습니다 . .index()
값은 0부터 시작하므로 표시 목적으로 +1을 원할 수 있습니다.
sort
사용할 수 있습니다 ui.placeholder.index
. 지수는 위치 1에서 시작
시작 위치를 어디에 저장할지 잘 모르겠으므로 David Boikes의 의견에 대해 자세히 설명하고 싶습니다. ui.item 객체 자체에 해당 변수를 저장하고 중지 기능에서 검색 할 수 있음을 알았습니다.
$( "#sortable" ).sortable({
start: function(event, ui) {
ui.item.startPos = ui.item.index();
},
stop: function(event, ui) {
console.log("Start position: " + ui.item.startPos);
console.log("New position: " + ui.item.index());
}
});
start
이 stop
스코프에있을 수 있다는 것을 실제로 알지 못했습니다 .
사용 갱신 하는 대신 정지
http://api.jqueryui.com/sortable/
업데이트 (event, ui)
유형 : sortupdate
이 이벤트는 사용자가 정렬을 중지하고 DOM 위치가 변경되면 트리거됩니다.
.
중지 (event, ui)
유형 : sortstop
정렬이 중지되면이 이벤트가 트리거됩니다. 이벤트 유형 : 이벤트
코드 조각 :
<script type="text/javascript">
var sortable = new Object();
sortable.s1 = new Array(1, 2, 3, 4, 5);
sortable.s2 = new Array(1, 2, 3, 4, 5);
sortable.s3 = new Array(1, 2, 3, 4, 5);
sortable.s4 = new Array(1, 2, 3, 4, 5);
sortable.s5 = new Array(1, 2, 3, 4, 5);
sortingExample();
function sortingExample()
{
// Init vars
var tDiv = $('<div></div>');
var tSel = '';
// ul
for (var tName in sortable)
{
// Creating ul list
tDiv.append(createUl(sortable[tName], tName));
// Add selector id
tSel += '#' + tName + ',';
}
$('body').append('<div id="divArrayInfo"></div>');
$('body').append(tDiv);
// ul sortable params
$(tSel).sortable({connectWith:tSel,
start: function(event, ui)
{
ui.item.startPos = ui.item.index();
},
update: function(event, ui)
{
var a = ui.item.startPos;
var b = ui.item.index();
var id = this.id;
// If element moved to another Ul then 'update' will be called twice
// 1st from sender list
// 2nd from receiver list
// Skip call from sender. Just check is element removed or not
if($('#' + id + ' li').length < sortable[id].length)
{
return;
}
if(ui.sender === null)
{
sortArray(a, b, this.id, this.id);
}
else
{
sortArray(a, b, $(ui.sender).attr('id'), this.id);
}
printArrayInfo();
}
}).disableSelection();;
// Add styles
$('<style>')
.attr('type', 'text/css')
.html(' body {background:black; color:white; padding:50px;} .sortableClass { clear:both; display: block; overflow: hidden; list-style-type: none; } .sortableClass li { border: 1px solid grey; float:left; clear:none; padding:20px; }')
.appendTo('head');
printArrayInfo();
}
function printArrayInfo()
{
var tStr = '';
for ( tName in sortable)
{
tStr += tName + ': ';
for(var i=0; i < sortable[tName].length; i++)
{
// console.log(sortable[tName][i]);
tStr += sortable[tName][i] + ', ';
}
tStr += '<br>';
}
$('#divArrayInfo').html(tStr);
}
function createUl(tArray, tId)
{
var tUl = $('<ul>', {id:tId, class:'sortableClass'})
for(var i=0; i < tArray.length; i++)
{
// Create Li element
var tLi = $('<li>' + tArray[i] + '</li>');
tUl.append(tLi);
}
return tUl;
}
function sortArray(a, b, idA, idB)
{
var c;
c = sortable[idA].splice(a, 1);
sortable[idB].splice(b, 0, c);
}
</script>
jquery 정렬 가능한 UI의 공식 문서에 따라 http://api.jqueryui.com/sortable/#method-toArray
업데이트 이벤트에서. 사용하다:
var sortedIDs = $( ".selector" ).sortable( "toArray" );
그리고이 var (sortedIDs)를 경고하거나 콘솔하면. 당신은 당신의 순서를 얻을 것이다. "올바른 답변"으로 선택하십시오.