jquery无序列表到有序列表

时间:2012-12-01 00:49:28

标签: jquery drag-and-drop jquery-ui-sortable

我有一个填充的无序列表,用户可以将li拖到无人居住的列表中。

<ul id="sortable1" class="connectedSortable">
    <li>Item 1</li>
    <li>Item 2</li>
    <li>Item 3</li>
    <li>Item 4</li>
    <li>Item 5</li>
</ul>

<ul id="sortable2" class="connectedSortable">
    <li></li>
</ul>

我想要做的是让无人居住的列表成为一个有序列表,显示添加元素的位置,并在用户对有序列表中的元素进行排序时更新位置。我在考虑使用这样的东西:

<ul id="sortable1" class="connectedSortable">
    <li><span> </span>Item 1</li>
    <li><span> </span>Item 2</li>
    <li><span> </span>Item 3</li>
    <li><span> </span>Item 4</li>
    <li><span> </span>Item 5</li>
</ul>

然后当用户将其移动到新列表时,使用元素的数字位置填充空span标记,但我不知道这是否是最有效的方法。

2 个答案:

答案 0 :(得分:0)

您可以使用 HTML-5 data attributes来处理此类情况。

<ul id="sortable1" class="connectedSortable">
    <li data-position="3">Item 1</li>
    <li data-position="5">Item 2</li>
    <li data-position="1">Item 3</li>
    <li data-position="4">Item 4</li>
    <li data-position="2">Item 5</li>
</ul>

答案 1 :(得分:0)

您可以使用text方法:

$('#sortable1 span').text(function(i){
   return ++i
})

或者创建一个jQuery方法并在update事件上调用它:

$.fn.populate = function(){
    this.each(function(i){
       this.innerHTML = ++i;
    })
}

$("#sortable1").sortable({
    update: function( event, ui ) {
       $('#sortable1 span').populate();
    }
});

http://jsfiddle.net/6ZGqM/