1
我將超過1000個節點(包括子節點)加載到dynatree中,並使用複選框來選擇每個節點。帶有1000複選框的jQuery Dynatree非常慢
但是,如果我們在演示中選擇全部或取消全選,http://wwwendt.de/tech/dynatree/doc/sample-select.html的速度非常慢,瀏覽器會掛起10秒鐘。
是否有修復?
編輯:樹有6-8級嵌套。每個級別都有大約5-10個節點。
更新代碼
<a href="#" id="select-all">select all</a>
<div id="echoSelection"></div>
<div id="my-tree"></div>
$('#select-all').click(function(){
alert($("#my-tree").dynatree("getRoot").length);
$("#my-tree").dynatree("getRoot").visit(function(node){
node.select(false);
});
return false;
});
$("#my-tree").dynatree({
initAjax: {
url: 'jsonData.aspx',
data: { type: "all" }
},
checkbox: true,
selectMode: 3,
onSelect: function (select, node) {
// Display list of selected nodes
var selNodes = node.tree.getSelectedNodes();
// convert to title/key array
var selKeys = $.map(selNodes, function (node) {
return "[" + node.data.key + "]: '" + node.data.title + "'";
});
$("#echoSelection2").text(selKeys.join(", "));
},
onClick: function (node, event) {
// We should not toggle, if target was "checkbox", because this
// would result in double-toggle (i.e. no toggle)
if (node.getEventTargetType(event) == "title")
node.toggleSelect();
},
onKeydown: function (node, event) {
if (event.which == 32) {
node.toggleSelect();
return false;
}
},
fx: { height: "toggle", duration: 200 },
autoCollapse: true
});
}
JSON格式示例
[
{"title":"Node 1","isFolder":false,"isLazy":false,"key":"1","icon":null,"prevNode":0,"nextNode":0,"children":[{"title":"Node 6","isFolder":false,"isLazy":false,"key":"6","icon":null,"prevNode":0,"nextNode":0,"children":[],"tooltip":null,"addClass":null,"expand":false,"MetaData":null}],"tooltip":null,"expand":false,"MetaData":null},{"title":"Node 2","isFolder":false,"isLazy":false,"key":"2","icon":null,"prevNode":0,"nextNode":0,"children":[],"tooltip":null,"expand":false,"MetaData":null},{"title":"Node 3","isFolder":false,"isLazy":false,"key":"3","icon":null,"prevNode":0,"nextNode":0,"children":[],"tooltip":null,"expand":false,"MetaData":null}]
是您的代碼aexact比賽進行到演示?你懶加載?請張貼代碼。 –
@JMWells:更新了代碼。 –
您確定這是代碼的準確表示嗎?我只是在jsFiddle上設置[this](http://jsfiddle.net/ApCUS/20/),並且可以在一秒鐘內在chrome中選擇62k個節點以上的內容。向上和Dynatree引發RangeError異常。你是否有任何綁定到可能導致每個選擇事件發生額外處理的事件?或者也許是某種遞歸? –