好的,我有一个LI,其中包括15个项目。这与上一个问题I asked here
有关好吧,我在大部分时间都弄明白了。但他们现在想要的是,当我点击一个项目的复选框时,它会动态移动到前面的#34;其他检查项目背后的清单。
换句话说,首先,当没有选中项目时,它们只是以与数据库匹配的顺序排列。但是如果你点击"锁定"例如,在第5个,它应该被检查,并自动移动到列表中的第1个位置。那么如果他们点击"锁定"在第7个,它应该移动到列表中的第2个位置,依此类推。
LI中的每个项目都有自己唯一的ID,所以我不认为它会成为一个问题。我只是不确定如何在jQuery中执行此操作。
根据请求,这里是当前的代码(这是我已经得到的):
var checkedPos = 0;
$('input[id^="theId"]').on('click',
function() {
var theId = this.id.slice(5);
var chkVal = this.checked;
var suppId = <%= Request.QueryString["pid"]%>;
if (chkVal === true) {
updateRecordLock(theId, suppId, chkVal, checkedPos);
checkedPos++;
$("#" + theId).removeClass("sortable");
} else {
checkedPos--;
updateRecordLock(theId, suppId, chkVal, null);
$("#" + theId).addClass("sortable");
}
});
&#13;
我想做的是以下内容:
答案 0 :(得分:0)
好的,我决定回来找我的解决方案。
首先,我开始这样做了:
var checkedPos = $('input[id^="theId"]:checked').length;
这给了我已经检查过的项目数量的计数。
然后,在我的点击事件中,我从我的原始帖子中完成了上面的代码。除了我为条件做了一个“索引”,我要么做+1或-1,要获得正确的索引值。< / p>
然后在最后,我做了类似的事情:
$("#" + theId).insertAfter("#myList li:nth-child(" + index + ")");
允许我通过将已选中的一个放入新位置来“重新排序”列表,而不刷新页面。