我似乎无法处理我的可排序列表。它们是列表元素的列表,每个元素都有一个
形成内部,我需要从中获取值。
Sortables.implement({
serialize: function(){
var serial = [];
this.list.getChildren().each(function(el, i){
serial[i] = el.getProperty('id');
}, this);
return serial;
}
});
var sort = new Sortables('.teams', {
handle: '.drag-handle',
clone: true,
onStart: function(el) {
el.fade('hide');
},
onComplete: function(el) {
//go go gadget go
order = this.serialize();
alert(order);
for(var i=0; i<order.length;i++) {
if (order[i]) {
//alert(order[i].substr(5, order[i].length));
}
}
}
});
然后将可排序列表添加到循环中的列表中sort.addItems(li);
。但是当我尝试在可排序的 onComplete 声明之外获取可排序时,js 说 this.list 是未定义的。
从另一个角度解决问题:
尝试遍历 DOM 会给我同样奇怪的结果。以下是一些代码的萤火虫控制台结果:
var a = document.getElementById('teams').childNodes;
var b = document.getElementById('teams').childNodes.length;
try {
console.log('myVar: ', a);
console.log('myVar.length: ', b);
} catch(e) {
alert("error logging");
}
将一个 li 元素硬编码到 HTML 中(而不是通过 JS 注入)会更改长度 == 1,并允许我访问该单个元素,这让我相信通过 DOM 访问注入的元素是问题所在(对于这种方法)
试图获取document.getElementById('teams').childNodes[i]
返回未定义的对象。
感谢您的任何帮助!