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

Posted

技术标签:

【中文标题】排序前后的jQuery sortable get .index()?【英文标题】:jQuery sortable get .index() before and after sorting? 【发布时间】:2012-05-15 02:51:30 【问题描述】:

我在标签插件上使用 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
]

JavaScript:

$('ul').sortable(
    start: function(event, ui)...,
    update: function(event, ui)...
);

【问题讨论】:

能否请您发布一些您的代码,以便我们有地方开始?不知道什么是 ui 等很难指导你。谢谢。 【参考方案1】:

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

【讨论】:

你是对的,问题是我需要打电话给$(ui.item).index() 而不仅仅是$(ui).index() 注意:$(ui.item) 不是必须的; ui.item.index() 可以正常工作。【参考方案2】:

您可以将一些数据与每个列表项相关联,以便像这样跟踪它们:

<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 访问这些数据:

$('ul li:nth-child(0)').data('id');
$('ul li:nth-child(1)').data('id');
$('ul li:nth-child(2)').data('id');

【讨论】:

【参考方案3】: $(函数() $( "#sortable" ).sortable( 更新:函数(事件,用户界面) console.log('更新:'+ui.item.index()) , 开始:函数(事件,用户界面) console.log('开始:' + ui.item.index()) ); $( "#sortable" ).disableSelection(); );

【讨论】:

如果您希望在更新中可以使用起始索引,那么您需要像这样设置它:$(ui.item).data('startindex', ui.item .index()) 然后使用 $(ui.item).data().startindex 访问它

以上是关于排序前后的jQuery sortable get .index()?的主要内容,如果未能解决你的问题,请参考以下文章

jQuery UI可排序点击事件

jQuery sortable live() 不排序

jQuery UI Sortable -- 如何取消拖动/排序项目的点击事件?

jQuery UI Droppable and Sortable - 放置在正确的排序位置

JQuery Draggable + Sortable:如何判断项目是不是实际添加到我的可排序列表中?

Bootstrap jquery sortable 只对行进行排序?