| ■No85298 (WebSurfer さん) に返信
ご返信ありがとうございます。
> Sortable > http://jqueryui.com/sortable/
はい。このsortableです。
> そう言われても、そのソースだけでは「処理がかなり遅くなって」という現象は第三者には見え > ないですし、ましてや、何が遅くしている原因なのか、どこがボトルネックなのかの切り分けは > 無理そうです。
画面的にはツリー要素のフォルダカテゴリ描画エリアがあり、もう一つ別に一覧の描画エリアがあります。 これをD&Dでフォルダの所属を変えたり、表示順を変えたりします。(分かりやすく言うとwindowsのエクスプローラ)
ここには書いてませんが、sortableの他にdroppableも併用しており、この処理の前にバインディングさせてます。 ツリー要素ははじめ(onload)から階層以下全てhtmlであるわけではなく、フォルダをクリックした度に通信して、 配下のフォルダ要素のHTMLを取得しています。
ですので、通信毎に毎回このsortableを呼ばなければいけないのですが、ここでログで時間を表示するようにした所、 このsortable()が終わるまで10秒くらいかかっているのが確認できました。
selectorに問題が無いのは、このようにやってみたからです。
var aa = $("#treeId").find(".sortable");
console.log("@1"+newDate().getミリ秒);
$("#treeId").find(".sortable").sortable(...
console.log("@2"+newDate().getミリ秒);
> イベントリスナーを疑っておられるようですが、アップされたソースにある、start, stop, sort > に設定された匿名関数のことではないですよね? > > 何のイベントでどのようなリスナーなのですか? そもそも、それが原因であることはどうやって > 調べたのでしょう? それが原因に間違いないのはどのように確認されたのでしょうか?
はい。まだ原因を特定できているわけではないのですが、このsortableAPIの中で必ず、mouseupやmousedownなどのイベントを 発行してるしてるものと思っていますが、それをクリアしないで何度も何度もここを呼ぶ為にイベントが都度溜まってしまっているのでは ないか、と疑ってます。
ですので、一旦画面上のイベントリスナーを取得してクリアできれば改善もされるのではないかと期待しています。
よろしくお願い致します。
|