jQuery UI可排序:获取阻止DOM更改的新项位置
我的页面上有一个可排序的列表。我想知道用户的意图:他拖动什么项目和在哪里,即拖动元素的新旧(潜在)位置 但我不希望jQuery sortable实际更改我的DOM——我想自己做。以下是一个例子:jQuery UI可排序:获取阻止DOM更改的新项位置,jquery,jquery-ui,jquery-ui-sortable,Jquery,Jquery Ui,Jquery Ui Sortable,我的页面上有一个可排序的列表。我想知道用户的意图:他拖动什么项目和在哪里,即拖动元素的新旧(潜在)位置 但我不希望jQuery sortable实际更改我的DOM——我想自己做。以下是一个例子: $(“.sortable列表”).sortable({ 项目:“.sortable项目”, 停止:功能(事件、用户界面){ //防止DOM更改 $(this.sortable('cancel'); //获取索引 var oldIndex=$(this.find('.sortable item').ind
$(“.sortable列表”).sortable({
项目:“.sortable项目”,
停止:功能(事件、用户界面){
//防止DOM更改
$(this.sortable('cancel');
//获取索引
var oldIndex=$(this.find('.sortable item').index(ui.item);
var newIndex='how?';//这就是问题所在
}
});
我知道我可以使用ui.originalPosition
和ui.position
计算新位置,但我相信jQuery sortable已经完成了这项工作,因为它将占位符放在了有效的位置,所以我只想得到值
我该怎么做呢?嗯,当我写问题的时候,我已经找到了解决办法 事实证明,在调用
$(this.sortable('cancel')
之前,jQuery sortable确实更改了DOM。这个调用实际上是恢复插件所做的更改
以下是工作代码:
$(“.sortable列表”).sortable({
项目:“.sortable项目”,
停止:功能(事件、用户界面){
var newIndex=$(this.find('.sortable item').index(ui.item);
$(this).sortable('cancel');//还原更改
var oldIndex=$(this.find('.sortable item').index(ui.item);
}
});
谢谢你发布你的解决方案——它帮助我解决了我的问题:)@noisesuq:我相信你是部分正确的。根据我的经验,IE7和IE8不会将DOM从jQueryui可排序的stop和receiveevents on call of cancel中恢复为其原始状态。一段时间后它就会这样做。