2009-07-15 9 views
4

Ich habe eine hierarchische Tags (mit Eltern Kind Beziehung) in meiner Seite und es wird zu 500 - 4500 Konto (kann sogar wachsen). Als ich den ziehbaren und dropfähigen für alle band, sah ich sehr schlechte Leistung in IE7 und IE6. Der benutzerdefinierte Helfer bewegt sich nicht reibungslos und war sehr, sehr langsam. Basierend auf einem anderen Post, den ich gemacht habe, wurde das Droppable bei mouseover- und mouseout-Ereignissen (dynamisch) gebunden/nicht gebunden. Es ist jetzt besser.jQuery Drag Drop langsamer für mehr DIV Artikel

Aber ich sehe immer noch nicht die benutzerdefinierte Helfer bewegen sich sehr reibungslos gibt es eine Lücke zwischen dem Mauszeiger und dem Helfer, wenn sie sich bewegen und sehr schlecht, wenn ich von Remote auf die Website zugreifen.

Bitte helfen Sie mir, dieses Leistungsproblem zu beheben. Bin total hier stecken .. :(

+0

Beziehen Sie sich auf http://stackoverflow.com/questions/552951/how-can-i-make-my-jquery-draggable-droppable-code-faster? Poste etwas Code, damit wir helfen können. –

+0

Übrigens sollte das Remote-Problem mit Ihrer Netzwerklatenz sein. Ich glaube nicht, dass die Optimierung von Javascript dort helfen kann. –

+0

Hallo Chetan, Ja, ich tat wie bei der Lösung für die Frage 552951 gegeben. Gewonnene Verbesserung. Aber wie wichtig ist die Netzwerklatenz, wenn die Jquery im Browser ausgeführt wird? Ich testete eine Probe mit etwa 100 Divs es war glatt. Aber mehr fügte ich hinzu, sagen 500+ es begann langsamer zu werden. Gibt es eine andere Möglichkeit, dies anzugehen? –

Antwort

1

Versuchen Sie, die Anzahl der droppables zu einem bestimmten Zeitpunkt zu reduzieren. Es gibt keine andere Möglichkeit gibt.

Eine Strategie ist Drop-Ziele in Gruppen von divs gebunden zu kombinieren und die Kinder binden von diesem div als droppables nur auf Maus geben Sie dieses Elternteil div und entfernen Sie sich auf Maus verlassen

1

Ich hatte ein ähnliches Problem vorher (nicht droppable divs, aber zu viele divs, die Leistung beeinflussen). Für uns die Lösung war, divs wiederzuverwenden, während sie von der Bildfläche scrollten, da du nicht annähernd so viele divs haben wirst, wenn du nur die derzeit im Blick hast und noch ein paar mehr, um hoch/runter zu scrollen.Natürlich war es ein wenig einfacher für uns, weil ich Es wurde mit einer Fernbedienung gesteuert, die nur einen Bildschirm nach dem anderen bewegen konnte und nicht auf willkürliche Stellen in der Bildlaufleiste achten musste, aber das könnte Ihnen noch nützlich sein. Falls die obige Erklärung nicht klar genug, es funktioniert in etwa so:

| [spare divs] 
| ----------------- 
| [buffered divs for page-up] 
| ----------------- 
| [divs currently on screen] 
| ----------------- 
| [buffered divs for page-down] 
| ----------------- 
| [spare divs] 
| ----------------- 

Nun, wenn Sie blättern Sie alle divs füllen, die jetzt auf der Seite mit den Daten, sind Sie wollen, dann die Puffer aussortieren , lassen Sie alle anderen divs leer. In Ihrem Fall, anstatt Daten zu ändern, können Sie mit dem Ein- und Ausschalten von Drop-off-Befehlen fortfahren.