は、私はちょうど同じような何かをやっていることが起こります。私の場合、私はtreeTableプラグインを使用しています。私はそれがある程度の時間のために吊るされている場合、倒れた木を広げたいと思う。ここまで私がこれまで持っていたことがあります。私はちょうど今日このことに取り組んでいる。操作を遅らせるためにタイムアウトを使用することに注意してください。
var timeout = null;
var clear = function() {
if (timeout) {
clearTimeout(timeout);
timeout = null;
}
}
$(".selector").droppable({
over: function(e, ui) {
if (! $(this).is("expanded")) {
clear();
timeout = setTimeout(function() {
$(this).expand();
timeout = null;
}, 1000);
}
}
, out: clear
, drop: function(e, ui) {
clear();
...
}
});
私はまだこれに問題があります。 1つのブランチが展開されると、その下の行がプッシュダウンされて、展開されたブランチのためのスペースを確保します。私はまだ落としていないので、私は、拡張された支店の最初の新しい要素の上にマウスを置く。問題は、この要素がhoverClassを取得しないことです。最初の要素が新しいブランチの下にプッシュダウンされて取得されます。それはjqueryがそれが動かされたことを理解していないようです。あなたが説明したことを考えれば、この問題に遭遇する可能性が高いと思います。
私はjquery-1.4.2を使用していましたが、jquery-1.6.4にアップデートして問題が解決するかどうかを確認しました。どちらのバージョンも同じ動作を示します。また、Chrome 14.0.835.202、Opera 11.52、Firefox 3.6.23、IE7.0.5730.13でこれをテストしました。それはすべて同じ方法で起こります。ですから、jqueryにバグがあるか、これを引き起こす何かをしました。
あなたの2番目の質問について私はあなたが何をしているかを完全に理解しているかどうかはわかりません。
私はrefreshPositionsを追加する必要があることを発見しました。私が見ていた問題を解決するためのドラッグ可能なオプションに真実。 jqueryのドキュメントによれば、これはパフォーマンスが劇的に低下するため、潜在的に変更されていることがわかっている場合は、明示的にrefreshPositionの方法を探すかもしれません。 – Carl
ねえ、ありがとう、私は間違いなくこれを試してみるつもりです。私はJavascriptの経験がありませんし、タイムアウトを制御することについては不明です。 clearTimeout、setTimeoutはよく見える。 2番目の質問では、実際にホバー上の他のアイテムを置き換えたいので、ユーザーが実際にドロップしない場合、アイテムを元の位置に戻す必要があります。私はそれが難しいとは思わないが、私はちょっとしたアイデアを探していただけだった。 –
私はプッシュダウンされた最初のアイテムとの同期の問題についてあなたが言うものを見ています。私の場合、「アウト」イベントでは、すべてのことを元に戻したいと思っています。うまくいけば、何の問題もありません。 –