-1

私は次のようなjs関数を作成しています:
-新しいdivを作成します-
新しく作成されたdivのxy座標を既存の他のdivと比較します
-デフォルトの座標が既存のdivによってすでに占有されている場合は、新しいdivを斜めにバンプします

したがって、ボタンをクリックして新しいdiv(ドラッグ可能なボックス)を作成した場合、ページ上にすでにあるすべてのボックスの座標をすばやくスキャンし、すでに座標が含まれているボックスを見つけた場合は、ページに配置されている新しいボックスの、その新しいボックスを少し左下にぶつけます。最初のバンプがそれをさらに別のボックスに正確にドロップする場合に備えて、おそらくそれをループに入れます。

それが応答を磨くなら、私もjqueryを使用しています。私はすでにコーディングの方法を知っています。私の質問はアプローチです。

比較するためにどちらがより速く処理されるのだろうかと思います:

  • 既存のすべてのdiv座標ペアがすでにjs配列に格納されており(div /ボックスがドラッグされると更新され、実際には次のアプローチを先制的に使用します)、インデックスが存在するかどうかをチェックする関数を実行します

    -または-

  • すべてのボックスdivをループするjs関数(すべてに共通のcssクラスがあります)、ページ上で直接すべての既存のdiv座標をチェックします(配列に格納されているものを探すのとは異なります)

他の理由で座標を配列に格納する必要はないので、そもそもそれが望ましいアプローチでなければ、それは不要です。座標を配列に格納することは、基本的に後者のアプローチと同じプロセスを実行しますが、その配列を突き抜けるjavascriptが、最初に座標をチェックするプロセスよりも高速であるかどうかを知りたいです。

パフォーマンスの違いは特に重要ではないと思いますが、どちらのアプローチが賢明か興味があります。

4

2 に答える 2

0

この目的には elementFromPoint が役立つ場合があります

https://developer.mozilla.org/En/DOM:document.elementFromPoint

特定の時点で最前面の要素のみを提供します。あなたの場合、これはうまくいくかもしれません。新しい div を DOM ツリーに配置するに確認してください。

これが絶対配置要素で機能するかどうか、そしてもちろんブラウザーのサポートで機能するかどうかはわかりません。

于 2012-07-09T01:46:04.697 に答える
0

あなたの質問は明確ではないと思います。占有されている div のみをチェックする場合は、最初の方法が最速ですが、最も近いペアをチェックする場合は、よく知られている計算上の問題です: http://en.wikipedia.org/wiki/Closest_pair_of_points_problem

編集:ダイブを並べ替えて、新しい div を最後に追加してみませんか?

于 2012-07-09T00:41:52.630 に答える