Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery sortable get.index()在排序之前和之后?_Jquery_Jquery Ui_Jquery Ui Sortable - Fatal编程技术网

jQuery sortable get.index()在排序之前和之后?

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&

我在标签插件上使用jQuery的sortable, 插件按照与实际项目相同的顺序维护与
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()访问它