Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.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 UI可排序:获取阻止DOM更改的新项位置_Jquery_Jquery Ui_Jquery Ui Sortable - Fatal编程技术网

jQuery UI可排序:获取阻止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

我的页面上有一个可排序的列表。我想知道用户的意图:他拖动什么项目和在哪里,即拖动元素的新旧(潜在)位置

但我不希望jQuery sortable实际更改我的DOM——我想自己做。以下是一个例子:

$(“.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中恢复为其原始状态。一段时间后它就会这样做。