2010-10-14 23 views
5

我一直在使用jQuery 1.4.2和jQuery UI 1.8.5來創建可恢復到原始位置的可拖動元素。雖然有一個問題;當你滾動瀏覽器窗口時,開始位置將被更改爲從更高的位置開始。它看起來像一個絕對的位置,但已滾動的金額沒有考慮到,但我不能確定。我已經完成了我在FireFox中的所有開發和測試。當瀏覽器滾動時,使用錯誤的起始位置可拖拽jQuery UI元素?

這裏是我記錄了這個短片.. http://www.youtube.com/watch?v=KPW4ljpjuF8

JavaScript的初始化代碼看起來是這樣的..

$('.frameworkNavigationItem').draggable({ 
     appendTo : 'body', 
     revert : 'invalid', 
     containment : 'body', 
     zIndex : 999 
    }); 

的元素之一的HTML看起來像這樣..

<div class="frameworkNavigationItem frameworkNavigationItemColor"> 
    <div class="frameworkNavigationItemName">Home</div> 
    <div class="frameworkNavigationItemDisplay"> 
     <input type="checkbox" checked="true" name="2_1"> 
     <input type="checkbox" checked="true" name="2_2"> 
     <input type="checkbox" checked="true" name="2_4"> 
    </div> 
    <div class="frameworkNavigationItemController"> 
     <input type="text" maxlength="255" value="mainNews" name="2_co"> 
    </div> 
    <div class="frameworkNavigationItemChild"> 
     <select name="2_ch"> 
      <option value="0">-</option> 
     </select> 
    </div> 
    <div style="clear: both;"></div>   
</div> 

這是CSS的一起去吧。

.frameworkNavigationItem 
    { 
     background-color   : #CACACA; 
     height      : 20px; 
     line-height     : 20px; 
     margin      : 2px 0; 
     vertical-align    : middle; 
    } 

     .frameworkNavigationItem:hover 
     { 
      background-color   : #BABABA; 
     } 

      .frameworkNavigationItem:hover input, .frameworkNavigationItem:hover select 
      { 
       background-color   : #BABABA; 
      } 

     .frameworkNavigationItem input, .frameworkNavigationItem select 
     { 
      background-color   : #CACACA; 
      border      : 0; 
      font-size     : 10px; 
     } 

     .frameworkNavigationItemColor 
     { 
      background-color   : #DADADA; 
     } 

      .frameworkNavigationItemColor input, .frameworkNavigationItemColor select 
      { 
       background-color   : #DADADA; 
      } 

     .frameworkNavigationItemName 
     { 
      float      : left; 
      height      : 15px; 
      padding-left    : 5px; 
     } 

     .frameworkNavigationItemDisplay 
     { 
      float      : right; 
      text-align     : right; 
      width      : 48px; 
     } 

     .frameworkNavigationItemController 
     { 
      float      : right; 
      width      : 160px; 
     } 

      .frameworkNavigationItemController input 
      { 
       width     : 150px; 
      } 

     .frameworkNavigationItemChild 
     { 
      float      : right; 
      width      : 160px; 
     } 

      .frameworkNavigationItemChild select 
      { 
       width     : 150px; 
      } 

請幫我一把!我不知道爲什麼會發生這種情況。

回答

4

這是在這裏全面地回答: jQuery draggable shows helper in wrong place after page scrolled

這是爲我工作的修補程序:

確保父元素(事件,如果它的身體)具有溢出:汽車;組。我的測試顯示此解決方案修復了位置,但它禁用了自動滾動功能。您仍然可以使用鼠標滾輪或箭頭鍵進行滾動。

+0

這也爲我解決了它,謝謝。當然,我不想在ul父元素上自動溢出,所以必須進行實驗 - 詛咒! – 2012-12-21 00:47:15

+0

由於使用溢出在我的情況下有其他不良後果,我正在使用可排序,並最終與@mordy答案中提供的幫助器。 Lame評論編輯超時只是在我保存之前觸發1秒。 :/ – 2012-12-21 00:56:50

+1

這包含可拖動的容器(帶滾動條)。我用helper:「克隆」,這工作 – 2013-09-26 14:35:21

相關問題