排序(a,b)在Dojo.dnd.source中不起作用
我尝试在用户在目标容器上放置元素后对数据进行排序,这里是排序事件
......
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,有趣的是,当我通过萤火虫调试时,它看起来是内部的身体
function( a,b ) {
....
}
从未执行过,也没有得到任何错误信息; 调试光标在function( a,b )
后面移动到.forEach
function( a,b )
但.forEach
方法的主体运行没有任何问题。 它看起来排序功能根本没有反应....任何提示表示赞赏。
UPDATE
这里是调用上面的排序函数的代码
dojo.connect( source_container, "onDndDrop", function( source, nodes, copy, target ) {
nodes.forEach(function(node) {
sortDnD();
});
});
UPDATE2
我改变之后
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.dojoDndItem”。
链接地址: http://www.djcxy.com/p/60459.html上一篇: Sort(a,b) doesn not work in Dojo.dnd.source
下一篇: grid.startup() not working for different data in the Dojo data grid