jQuery sortable get.index()在排序之前和之后?
我在标签插件上使用jQuery的sortable, 插件按照与实际项目相同的顺序维护与jQuery sortable get.index()在排序之前和之后?,jquery,jquery-ui,jquery-ui-sortable,Jquery,Jquery Ui,Jquery Ui Sortable,我在标签插件上使用jQuery的sortable, 插件按照与实际项目相同的顺序维护与li相关的对象数组 排序完成后,我需要更新数组中项目的顺序 我想我可以在开始事件调用$(ui).index()和更新事件调用相同的函数,这两个函数都会返回-1 我该怎么做? 结构: <ul> <li>here<a class="close">x</a></li> <li>are<a class="close">x</a&
li
相关的对象数组
排序完成后,我需要更新数组中项目的顺序
我想我可以在开始事件调用$(ui).index()
和更新事件调用相同的函数,这两个函数都会返回-1
我该怎么做?
结构:
<ul>
<li>here<a class="close">x</a></li>
<li>are<a class="close">x</a></li>
<li>some<a class="close">x</a></li>
<li>tags<a class="close">x</a></li>
</ul>
[{
label: 'here',
value: 36,
element: '$(the li that this info is about)',
index: 0
},
{
label: 'are',
value: 42,
element: '$(the li that this info is about)',
index: 1
},
{
label: 'some',
value: 21,
element: '$(the li that this info is about)',
index: 2
},
{
label: 'tags',
value: 26,
element: '$(the li that this info is about)',
index: 3
}]
$('ul').sortable({
start: function(event, ui){...},
update: function(event, ui){...}
});
JavaScript:
<ul>
<li>here<a class="close">x</a></li>
<li>are<a class="close">x</a></li>
<li>some<a class="close">x</a></li>
<li>tags<a class="close">x</a></li>
</ul>
[{
label: 'here',
value: 36,
element: '$(the li that this info is about)',
index: 0
},
{
label: 'are',
value: 42,
element: '$(the li that this info is about)',
index: 1
},
{
label: 'some',
value: 21,
element: '$(the li that this info is about)',
index: 2
},
{
label: 'tags',
value: 26,
element: '$(the li that this info is about)',
index: 3
}]
$('ul').sortable({
start: function(event, ui){...},
update: function(event, ui){...}
});
如果
.index()
返回-1,则表明您在元素可用于DOM之前发出了该请求。或者您错误地标记了选择器,并且它在调用时不存在,或者与.index()函数相关的选择器为空。您可以将一些数据与每个列表项关联,以如下方式跟踪它们:
<ul id="sortable">
<li data-id="1" class="ui-state-default">1</li>
<li data-id="2" class="ui-state-default">2</li>
<li data-id="3" class="ui-state-default">3</li>
</ul>
$('ul li:nth-child(0)').data('id');
$('ul li:nth-child(1)').data('id');
$('ul li:nth-child(2)').data('id');
$(函数(){
$(“#可排序”)。可排序({
更新:函数(事件,ui){
console.log('update:'+ui.item.index())
},
开始:函数(事件,ui){
console.log('start:'+ui.item.index())
}
});
$(“#可排序”).disableSelection();
});
你能把你的代码贴出来让我们有地方开始吗?在不知道ui是什么的情况下很难指导您,等等。谢谢。您是对的,问题是我需要调用
$(ui.item).index()
而不仅仅是$(ui.index()
)!注意:$(ui.item)不是必需的;ui.item.index()可以正常工作。如果希望开始索引在更新中可用,则需要将其设置为:$(ui.item.data('startindex',ui.item.index()),然后使用$(ui.item.data().startindex()访问它