我相信我已經想出了我的代碼中的循環閉包問題。我讀過this article 這是一個很大的幫助。最近,我提出了一個類似於文章中引用的「循環閉合」部分的問題。我試過他們的解決方案,但它仍然沒有解決我的問題。我一直在尋找解決方案,但我總是在文章中找到它。使用封閉循環:不工作? (使用jqueryui)
我正在使用jqueryui使一些lis可拖動,當我把它們放在容器中時,我需要使用特定於該li的變量(節點)。問題是節點(和索引)總是最後一個(因此關閉問題)。
這裏是我的代碼(我已經簡化它一點點,使其更易於識別問題):
function makeDraggable(node, i) {
$("#rightTab li#" + node.id).draggable({
containment: 'div#container',
stack: 'div#container',
scroll: false,
revert: 'invalid',
helper: function() {
return $(this).children().clone();
},
start: function(event, ui) {
$(this).children().css('opacity', 0);
},
stop: function(event, ui) {
$(this).children().css('opacity', 1);
}
});
$("#vis").droppable({
drop: test(node, i)
});
}
function test(noder, index) {
return function(event, ui) {
alert(index);
//stuff with node.
}
}
function appendInfo(nodes) {
for(var i = 0; i < nodes.length; i++) {
$("#rightTab #content ul").append("<li id=" + nodes[i].id + "><div></div></li>");
if(visualization.hasImageLabel) {
interfaceHandler.handleImageLabel(nodes[i]);
}
if(visualization.hasTextLabel) {
interfaceHandler.handleTextLabel(nodes[i]);
}
makeDraggable(nodes[i], i);
}
}
當我提醒指數(功能試驗),它總是打印9 (最大數組長度),節點也總是最後一個。
(對不起,我英文不好)
哦,好吧。我現在感到非常愚蠢。出於某種原因,我認爲我必須爲每個可拖動的項目添加一個droppable,但這甚至沒有意義。非常感謝你的幫助。 – Solidus
我們都在這裏學習:) –