2012-12-02 33 views
0

使用[x1,y1,x2,y2]格式時,我無法設置jqueryUI可拖動函數的包含值。這裏是JS:JQueryUI Draggable - 設置Containment [x1,x2]值的問題

<script type="text/javascript"> 
    //slideTest.js 
    $(document).ready(function(){ 
     $('.slideMin').each(function(){ 
      $(this).draggable({ 
       containment: [$(this).parent().offset().left,$(this).parent().offset().top,$(this).next('div').offset().left,$(this).parent().offset().top] 
      }); 
     }); 
</script> 

和腳本與交互的HTML:

<div class="slideBar"> 
    <div class="slideMin"></div> 
    <div class="slideMax"></div> 
</div> 

我想設置的阻力遏制(該slideMin DIV)的基礎上,偏移()。在這種情況下,下一個div的左邊(slideMax)。

換句話說,當拖動行爲到達下一個(slideMax)div的左側時,我想讓可拖動行爲停止(對於slideMin div)。

x1似乎正在工作,因爲拖動停止在定義的位置,但是,它重疊並延伸到下一個div之外,我不想發生這種情況。我如何設置x2值肯定有問題,但我不確定它是什麼。

有什麼建議嗎?

回答

0

想通了......我有兩個div,都可拖動。第一個div在到達下一個div時停止。上面的代碼完成了這個任務,直到我拖動任何一個div:一旦div被拖動,其他div的可拖動範圍沒有更新,因此,我收到了拖動範圍與其他div重疊的錯誤。爲了解決這個問題,我必須重新啓動併爲正在移動的div的可拖動函數內的其他div設置可拖動範圍。

新的代碼是這樣的:

$(this).draggable({ 
    containment: [$(this).position().left, $(this).position().top, $(this).next().position().left - $(this).width()+4, $(this).position().top], 
    drag: function(e){ 
     $(this).next().draggable({ 
      containment: [parseFloat($(this).position().left) + parseFloat($(this).width())-4, $(this).next().position().top, parseFloat($(this).parent().position().left) + parseFloat($(this).parent().width())-3, $(this).next().position().top] 
     }); 
    } 
}); 
$(this).draggable({ 
    containment: [parseFloat($(this).prev().position().left) + parseFloat($(this).prev().width())-4, $(this).position().top, $(this).position().left, $(this).position().top], 
    drag: function(e){ 
     $(this).prev().draggable({ 
      containment: [$(this).parent().offset().left-$(this).prev().width()+5, $(this).prev().position().top, $(this).position().left - $(this).prev().width()+4, $(this).prev().position().top] 
     }); 
    } 
}); 

PS,數字-3 -4 +5,等人來,加上間距我可拖動的div手柄(4PX手柄),如果你沒有手柄,你不需要額外的-3 -4 +5代碼部分。

相關問題