Javascript 使用jQuery在多个列表中移动列表项并保存到MySQL

Javascript 使用jQuery在多个列表中移动列表项并保存到MySQL,javascript,jquery,drag-and-drop,jquery-ui-sortable,Javascript,Jquery,Drag And Drop,Jquery Ui Sortable,我尝试更改此代码以处理多个列表,并且在列表之间拖放项目也很重要,而不仅仅是在同一个列表中: 以下是我制作的代码: <?php require("db.php"); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.

我尝试更改此代码以处理多个列表,并且在列表之间拖放项目也很重要,而不仅仅是在同一个列表中:

以下是我制作的代码:

   <?php require("db.php"); ?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>jQuery Dynamic Drag'n Drop</title>
<script type="text/javascript" src="//code.jquery.com/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="//code.jquery.com/ui/1.7.3/jquery-ui.min.js"></script>

<style>
 ul {margin:10px;padding:0;min-height:100px;min-width:100px;background-color:#87FFF5;}
 #sortable1, #sortable2 {
 float: left;
 width: 400px;
 }
 #sortable1 li, #sortable2 li {
 list-style: none;
 margin: 0 0 4px 0;
 padding: 10px;
 background-color:#00CCCC;
 border: #CCCCCC solid 1px;
 color:#fff;
 cursor:move;
 }
 #Result {
 float:none;
 clear:both;
 width: 260px;
 padding:10px;
 }
</style>

<script type="text/javascript">
 $(document).ready(function(){
 $(function() {
 $("#sortable1, #sortable2").sortable({ connectWith: ".connectedSortable", opacity: 0.6, cursor: 'move',
 update: function(event,ui) {
 var order = $(this).sortable("serialize") + '&action=updateRecordsListings' + '&id=' + this.id + '&item='+ui.item[0].innerHTML;
 $.post("updateDB.php", order, function(theResponse){$("#Result").html(theResponse);});
 }
 });
 });
 });
</script>

</head>
<body>
 <div>
 <ul id="sortable1" class="connectedSortable">
 <?php
 $query = "SELECT * FROM records_multiple WHERE list='sortable1' ORDER BY recordListingID ASC";
 $result = mysql_query($query);
 while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
 ?>
 <li id="recordsArray_<?php echo $row['recordID']; ?>"><?php echo $row['recordID'] . ". " . $row['recordText']; ?></li>
 <?php } ?>
 </ul>

 <ul id="sortable2" class="connectedSortable">
 <?php
 $query = "SELECT * FROM records_multiple WHERE list='sortable2' ORDER BY recordListingID ASC";
 $result = mysql_query($query);
 while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
 ?>
 <li id="recordsArray_<?php echo $row['recordID']; ?>"><?php echo $row['recordID'] . ". " . $row['recordText']; ?></li>
 <?php } ?>
 </ul>
 </div>

 <div id="Result"></div>
</body>
</html>

jQuery动态拖放
ul{边距:10px;填充:0;最小高度:100px;最小宽度:100px;背景色:#87FFF5;}
#排序1,#排序2{
浮动:左;
宽度:400px;
}
#可排序1 li,#可排序2 li{
列表样式:无;
利润率:0.4px 0;
填充:10px;
背景色:#00CCCC;
边框:#中交固体1px;
颜色:#fff;
光标:移动;
}
#结果{
浮动:无;
明确:两者皆有;
宽度:260px;
填充:10px;
}
$(文档).ready(函数(){
$(函数(){
$(“#sortable1,#sortable2”).sortable({connectWith:“.connectedSortable”,不透明度:0.6,光标:'move',
更新:功能(事件、用户界面){
var order=$(this.sortable(“serialize”)+'&action=updateRecordsStings'+'&id='+this.id+'&item='+ui.item[0]。innerHTML;
$.post(“updateDB.php”,顺序,函数(响应){$(“#结果”).html(响应);};
}
});
});
});
拖放功能现在运行得很好,但是我在将结果保存到MySQL数据库时遇到了问题。 如果我有多个列表,我必须知道删除项目的新列表的名称和移动项目的ID。因此,我只能保存该列表,还可以更改移动项目的列表ID

如果使用update:function(event,ui),列表的名称并不总是正确的。如果我将其更改为receive:function(event,ui),则它是正确的,但仅当我将该项移动到其他列表中时才调用PHP文件。 那么,在任何情况下,我如何才能找回移动或删除项目的列表的名称呢?

也许您可以使用 更改(事件、ui)类型:sortchange

此事件在排序期间触发,但仅在DOM位置发生更改时触发。

如果这不起作用,下面是完整的选项列表。

更新请看这篇文章。 ... 当您添加if语句并使用update时,它会被调用两次

  • 更新:功能(e、ui){ if(this==ui.item.parent()[0]){ //你的代码在这里 }}

谢谢。我已经试过了,但没有一个效果很好。但也许这并不是我试图获取该项目所在列表名称的最佳方式。随着更改,当我在列表之间移动项时,有时也会得到错误的列表名称。请看这就是问题所在,要解决它,只需添加if:update:function(e,ui){if(this==ui.item.parent()[0]){var order=$(this.sortable)(“serialize”)+'&action=updateRecordsStings'+'&id='+this.id+'&item='+ui.item[0].innerHTML;$.post(“updateDB.php”,order,function(响应){$(“#Result”).html(响应);}