ソート可能なリストのハンドルを取得できないようです。それらはリスト要素のリストであり、それぞれに
そこから値を取得する必要があります。
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));
}
}
}
});
sortables リストは、ループ内のリストに追加されますsort.addItems(li);
。しかし、sortables onComplete 宣言の外で sortables を取得しようとすると、js は this.list が未定義であると言います。
別の角度から問題にアプローチする:
DOM をループしようとすると、同様に奇妙な結果が得られます。いくつかのコードの firebug コンソールの結果は次のとおりです。
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");
}
HTML に 1 つの li 要素を (JS を介して注入されるのではなく) ハードコーディングすると、長さ == 1 が変更され、その単一の要素にアクセスできるようになり、DOM を介して注入された要素にアクセスすることが問題であると信じるようになります (この方法の場合)。
document.getElementById('teams').childNodes[i]
戻り値が未定義のオブジェクトを取得しようとしています。
助けてくれてありがとう!