我尝试在用户将元素放到目标容器上后对数据进行排序,这是排序事件
......
var elements_container= dojo.dnd.Source("elements_container");
dojo.byId("elements_container").innerHTML = '';
... // add elements into container...
function sortDnD(){
// actually full class name is ".element dojoDndItem" to query
dojo.query(".element", dojo.byId("elements_container")).sort(
function( a,b ) {
// fire bug debugging cursor skip this section
var divs_a = dojo.query('> div.sequence', a)
var diValue_a = divs_a[0].innerHTML;
var divs_b = dojo.query('> div.sequence', b)
var diValue_b = divs_b[0].innerHTML;
return (divs_a == divs_b ? 0 : (a.divs_a > b.divs_b ? 1 : -1));
}
).forEach(// fire bug debugging cursor move to this section
function(a, idx) {
dojo.byId("element_container").insertBefore(a, dojo.byId("elements_container").childNodes[idx]);
});
}
dojo.byId("elements_container") 是 dojo dnd 源。我可以保证容器中有几个元素...
我使用的是dojo1.6,有趣的是,当我通过firebug调试时,它看起来是里面的body
function( a,b ) {
....
}
从未执行过,也没有得到任何错误消息;调试光标移动到 function( a,b )
之后的 .forEach
,但 .forEach
方法的主体运行没有任何问题。看起来排序函数根本没有任何响应。
更新
这是调用上述排序函数的代码
dojo.connect( source_container, "onDndDrop", function( source, nodes, copy, target ) {
nodes.forEach(function(node) {
sortDnD();
});
});
更新2
改变后
dojo.query(".element", dojo.byId("elements_container")).sort(
到
dojo.query(".element", elements_container).sort(
Dojo 给出:
TypeError: root.getElementsByClassName is not a function
...ag){var ret=_201(0,arr),te,x=0;var tret=root.getElementsByClassName(_235);while(...
这是 elements_container
的 dom 数据
node: div#elements_container.container.dnd-list.dojoDndContainer.dojoDndSource.dojoDndTarget
childrenNodes: NodeList[div#dojoUnique23.element.dojoDndItem, div#dojoUnique24.element.dojoDndItem, .....
最佳答案
排序中的回调未被调用的原因是因为您的查询选择器返回一个空数组(因此您没有任何可排序的内容)。
请使用以下内容:
dojo.query(".element.dojoDndItem", "elements_container").sort(
请注意,最初您的选择器是“.element .dojoDndItem”,这意味着“查找具有类 dojoDndItem 的所有节点,这些节点是具有类 element 的节点的子节点”。这里,两个类都在相同的节点中,因此您需要删除空格并将选择器设置为“.element.dojoDndItem”。
关于javascript - Sort(a,b) 在 Dojo.dnd.source 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27529727/