2012-08-30 174 views
13

我有一個奇怪的問題,今天早上jQuery可拖動,我想知道是否有其他人遇到過這個。jQueryUI可拖動設置「位置:相對」在我的拖動divs

我在很大的div裏面有很多小的div。他們絕對定位:CSS中的「職位:絕對」職位,實際職位本身是按照JS的需求計算和設置的。

現在我添加功能,讓這些div可拖動。

但是,只要我製作一個可拖動的,就直接在元素上給出「position:relative」,就像你想象的那樣,嚴重地擾亂了屏幕上的位置。

有誰知道爲什麼它改變這個「位置」或如何告訴它不?

編輯:

剛剛意識到還有一個比較明顯的答案盯着我的臉 - 我的位置很重要!絕對!這似乎解決了它。但我仍然感興趣,如果有人知道爲什麼它設置「位置:相對」像這樣(並且不會使其可配置或先檢查它是否需要位置)...我想知道我剛存儲的問題爲我自己;-)

+1

你使用的是什麼版本?你是如何初始化它的? Draggable支持絕對和相對定位。仔細檢查代碼,默認情況下,它應該設置爲相對的唯一原因是如果元素上沒有設置位置類型。 – Nal

+0

Cheers Nal。我正在使用1.7.2。該位置是在類中設置的,而不是在元素中設置的,並且在元素上沒有可拖動的位置,我可以在Chrome調試器中看到它是「位置:絕對」計算的。它的工作原理。當我將可拖動的元素應用到它時,直接將「position:relative」應用於元素。這可能是一個jQuery的bug,那麼它應該使用getComputedStyle來查找位置。 –

+0

這是一個非常舊的版本。你應該升級到1.8,看看這是否有所作爲。你使用'helper'可拖動選項還是其他選項?但是,位置:relative設置的唯一行是[here](https:// github。com/jquery/jquery-ui/blob/1.7/ui/ui.draggable.js#L19) – Nal

回答

0

它也發生在我身上,但只在Chrome上。原因?

它是這樣的:

$("#div-popup").draggable({ handle: ".top", containment: 'document'}); 

然後我刪除了遏制參數,如:

$("#div-popup").draggable({ handle: ".top"}); 

所以它是關於瀏覽器(Chrome在這種情況下),這臺位置當您指定哪個包含時,該元素將可拖動。

11

「我碰到了同樣的問題,今天就來了。原因是我是一個動態創建的元素上應用draggable()。我是‘後來’追加到dom。元素應該是dom,當你申請draggable()(如果style被一個班級使用)。簡而言之,當它找不到與element相關的位置時,它會添加relative。「 - Jashwant

杉杉做:.append(jElement)然後:jElement.draggable()

出於某種原因Jashwant把他的答案的問題的評論。所以我認爲其他人在這裏重新發佈會很方便。