Я использую функцию перетаскивания в Dojo, чтобы создать сортируемый многомерный список.
Теперь, когда я добавил код, который будет порождать новый UL внутри зависшего LI при перетаскивании чего-либо на него, вновь порожденный UL не будет принимать элементы, в которые нужно перетаскивать.
dojo.addOnLoad(function ()
{
dojo.query(".listview").forEach(function(node, index, arr)
{
dojo.connect(node, "onmouseover", "ListViewInsertList");
dojo.connect(node, "onmouseout", "ListViewInsertListAbort");
});
});
var hovernode = null;
var timeout = null;
function ListViewInsertList(e)
{
console.log("Hover caught.");
if (dojo.query(".dojoDndAvatar").length > 0)
{
console.log("DND is active!");
hovernode = e.target;
timeout = window.setTimeout("ListViewInsertListDo()", 1000);
}
}
function ListViewInsertListDo()
{
dojo.create("ul", { dojoType: "dojo.dnd.Source", className: "container listview" }, hovernode);
dojo.query(".listview").forEach(function(node, index, arr)
{
dojo.connect(node, "onmouseover", node, "ListViewInsertList");
dojo.connect(node, "onmouseout", node, "ListViewInsertListAbort");
});
}
function ListViewInsertListAbort()
{
window.clearTimeout(timeout);
}
Мой HTML выглядит примерно так:
<ul dojoType="dojo.dnd.Source" selfAccept="true" class="container listview">
<li class="dojoDndItem listviewitem">abc</li>
<li class="dojoDndItem listviewitem">def
<ul dojoType="dojo.dnd.Source" selfAccept="true" class="container listview">
<li class="dojoDndItem listviewitem">ghi</li>
</ul>
</li>
</ul>
Так как мне сказать Dojo, что недавно добавленный UL хорош для предметов, в которые можно бросить?