首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >排序前后的jQuery可排序get .index()?

排序前后的jQuery可排序get .index()?
EN

Stack Overflow用户
提问于 2012-05-06 11:15:02
回答 2查看 44.8K关注 0票数 22

我在一个标签插件上使用了jQuery的sortable,这个插件维护了一个与li相关的对象数组,这些对象的顺序与实际的项目相同。

当排序完成时,我需要更新数组中项目的顺序。

我以为我可以在start事件中调用$(ui).index(),在update事件中调用相同的方法,这将给我提供初始位置和最终位置,但这两个调用都返回-1

我该怎么做呢?

结构:

代码语言: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>

数组结构:

代码语言:javascript
复制
[{
    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
}]

JavaScript:

代码语言:javascript
复制
$('ul').sortable({
    start: function(event, ui){...},
    update: function(event, ui){...}
});
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-06 11:26:07

如果.index()返回-1,则表明您在元素可用于DOM之前发出该请求。或者错误地标记了选择器,并且在调用时该选择器不存在,或者相对于.index()函数为空

票数 12
EN

Stack Overflow用户

发布于 2012-05-06 11:37:18

您可以将一些数据与每个列表项相关联,以跟踪它们,如下所示:

代码语言:javascript
复制
<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>

然后,您可以通过jQuery访问此数据,如下所示:

代码语言:javascript
复制
$('ul li:nth-child(0)').data('id');
$('ul li:nth-child(1)').data('id');
$('ul li:nth-child(2)').data('id');
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10467820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档