我使用以下Sortable插件:
https://github.com/rubaxa/Sortable
代码在大多数情况下都能正常工作。我遇到的问题是 onUpdate()回调。由于某种原因,它总是传回价值"数字"在prompt
:
var items = {
social: {
// some variables, but not relevant to this test case
},
extra: {
// some variables, but not relevant to this test case
},
media: {
// some variables, but not relevant to this test case
},
addresses: {
// some variables, but not relevant to this test case
},
numbers: {
// some variables, but not relevant to this test case
},
};
for (var prompt in items) {
if ($('#input_fields_wrap_'+propt+'_fields').length) {
console.log("setting up sortable for " + 'input_fields_wrap_'+prompt+'_fields')
Sortable.create(document.getElementById('input_fields_wrap_'+prompt+'_fields'), {
animation: 150,
onUpdate: function (evt) {
console.log("FOO: "+ prompt)
updateSortNumbers(pro,pt)
}
});
}
}
当您更改排序顺序时,您总是得到:
FOO:数字
即使您正在对其他字段进行排序。我认为它与我初始化它的顺序有关:
因为"数字"是最后一个,总是被选中。有没有办法可以在Sortable元素本身设置一个值,以确定哪个被调用?
答案 0 :(得分:0)
好的,我终于弄清楚如何做到这一点。诀窍是用以下方法获取有问题的物品:
var item = evt.item;
然后item
拥有一个名为className
的值,所以我可以这样做:
var this_is = item.className.replace("-item","");
这正确地保留了我需要的价值。所以最终的工作代码是:
Sortable.create(document.getElementById('input_fields_wrap_'+propt+'_fields'), {
animation: 150,
onUpdate: function (evt) {
var item = evt.item;
// console.log(item.className)
var this_is = item.className.replace("-item","");
console.log("FOO: "+ this_is)
updateSortNumbers(this_is)
}
});