0

jQueryのイベント処理が添付<ul>されたアイテムを含む垂直リストがあります。draggableリストアイテムをドラッグすると、すべてのリストアイテムがドラッグされ、ドラッグ中にレンダリングされます。

問題:helper一番上のリスト項目がドラッグされたものでない限り(つまり、マウスボタンでクリックしてドラッグされた場合)、私の関数はドラッグされた項目を誤った垂直位置にレンダリングします。これは、ドラッグしたアイテムの垂直位置がわからないためです。それを知っていれば、cursorAt topこれを相殺するようにプロパティを設定できます。

擬似コード:

$(list items).draggable({
    cursorAt: {
       cursor: "crosshair",
       left: 5,
       top: ? // need to know vertical position of dragged item here...
    },

だから私の質問は、ドラッグされたアイテムの垂直位置を見つける方法はありますか?

4

1 に答える 1

1

クリック位置を属性に入れるためにいくつかのことを試みましたが、topうまくいきませんでした。

そこで、回避策を考え出しました。ドラッグ可能なものをでオフセットする代わりにcursorAt、CSSハック(を使用margin-top)を使用して、ドラッグ時にレンダリングされるもの(helper関数で設定)を移動しました。

 helper: function(e, ui) {
        var compensateUp = e.pageY;
        var helperHtml='<ul style="margin-top:-' + compensateUp + 'px;">';
        ...

すべての主要なブラウザで魅力のように機能します。

于 2012-04-24T09:35:36.690 に答える