排序(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