2013-08-29 1 views
1

나는 가변적 인 컨테이너를 보유하고 있으며 다양한 양의 자식을 나란히 표시하여 display: inline-block과 함께 표시합니다. 첫 번째 또는 마지막 자식 중 하나의 오프셋을 기반으로 포함이 이루어 지도록 사용자가 어느 방향 으로든 첫 번째 또는 마지막 둘 중 하나를 제외한 모든 화면을 끌 수 있습니다.자식 중 하나의 오프셋을 기반으로하여 드래그 가능한 요소가 포함되어 있습니다

drag: function(){//prevent dragging once last element offset is within 10% of window width 
    if ($('.element:last').offset().left < $(window).width() * .10)){ 
    return false; 
    } 
} 

문제는 일단 내가 거짓을 반환하면 더 이상 끌 수 없다는 것입니다. 봉쇄의 일부 변형이 여기있는 유일한 옵션처럼 보입니다.하지만 복잡한 상황에 어떻게 대처할 지 잘 모르겠습니다.

답변

0

내가 끝낸 것은 draggable 메서드로 전달되는 객체 안에 모든 것을 넣는 것이 었습니다. 일단 개체를 가져 오면 자식 위치가 바뀔 때마다 포함 속성을 업데이트 할 수 있습니다. 설정이 완료되면 draggable을 다시 초기화 할 수 있습니다.

var borg = { 
    axis: 'x', 
    drag:function(){} 
} 
$('#draggable').draggable(borg); 
//set property after each time the child offset changes 
borg.containment = [ 
    -1 * ($('.child:first').offset().left + $(window).width() * .18), //x1 
    0,   
    $(window).width()/2, //x2 
    0 
]; 
//reinitialize 
$('#draggable').draggable(borg); 
//would $('#draggable').draggable('destroy').draggable(borg) be better or unnecessary?