使用jQuery根据特定元素值和位置对列表项重新排序

使用jQuery根据特定元素值和位置对列表项重新排序,jquery,sorting,jquery-ui,jquery-ui-sortable,Jquery,Sorting,Jquery Ui,Jquery Ui Sortable,好的,我有一个李,比方说,里面有15个项目。这与前一个问题有关 嗯,我大部分时间都明白了这一点。但他们现在想要的是,当我单击某个项目的复选框时,它会动态地移动到列表中其他选中项目后面的“前面” 换句话说,当一开始没有检查项时,它们只是按照与数据库匹配的任何顺序。但是,如果您单击第五个位置上的“锁定”,则应选中它,并自动移动到列表中的第一个位置。因此,如果他们单击第7个位置上的“锁”,它将移动到列表中的第2个位置,依此类推 LI中的每个项目都有自己的唯一ID,因此我认为这不会是一个问题。我只是不知

好的,我有一个李,比方说,里面有15个项目。这与前一个问题有关

嗯,我大部分时间都明白了这一点。但他们现在想要的是,当我单击某个项目的复选框时,它会动态地移动到列表中其他选中项目后面的“前面”

换句话说,当一开始没有检查项时,它们只是按照与数据库匹配的任何顺序。但是,如果您单击第五个位置上的“锁定”,则应选中它,并自动移动到列表中的第一个位置。因此,如果他们单击第7个位置上的“锁”,它将移动到列表中的第2个位置,依此类推

LI中的每个项目都有自己的唯一ID,因此我认为这不会是一个问题。我只是不知道如何在jQuery中实现这一点

根据请求,以下是我的当前代码(这是我得到的):

var checkedPos=0;
$('input[id^=“theId”])。在('单击'),
函数(){
var theId=这个.id.slice(5);
var chkVal=此项已检查;
var suppId=;
如果(chkVal==真){
更新记录锁(theId、suppId、chkVal、checkedPos);
checkedPos++;
$(“#”+theId).removeClass(“可排序”);
}否则{
检查位置--;
updateRecordLock(theId、suppId、chkVal、null);
$(“#”+theId).addClass(“可排序”);
}

});好的,我决定带着我的解决方案回来

首先,我开始这样做:

var checkedPos = $('input[id^="theId"]:checked').length;
这给了我已经检查的项目数

然后,在我的click事件中,我从我的原始帖子中执行了上面的代码。除了我在条件中添加了一个“索引”,我对其执行了+1或-1操作,以获得正确的索引值

最后,我做了这样的事情:

$("#" + theId).insertAfter("#myList li:nth-child(" + index + ")");

这使我可以通过将选中的列表置于新位置来“重新排序”列表,而无需刷新页面。

如果您能提供代码,我可以提供更好的帮助。检查函数.prependTo()-它的copy元素,并将选中的其他元素放在前面(pre)