2011-10-20 6 views
3

내부에 여러 "열"이있는 DIV를 만드는 jQuery 플러그인을 개발 중입니다. 사용자가 DIV를 스크롤하면 스크롤이 열 가장자리에 "스냅"됩니다. 나는 이것을 증명하는 jsFiddle을 만들었습니다. 상자가 1 열의 끝까지 찰칵 소리가 날 때까지 상자를 오른쪽으로 스크롤하십시오. http://jsfiddle.net/vcYjm/3/드래그 가능한 드래그 이벤트 후 CSS 속성을 설정할 수 없습니다.

여기에 문제가 있습니다. 사용자가 스크롤 핸들을 드래그, 우리는 드래그 코드 블록의에서이 코드 컬럼의 스크롤 위치를 업데이트

페이지가 처음로드 될 때 잘 작동하지만
$('.'+snapHolder).css('right', snapScrollPos+'px'); 

이되면 위치 속성의 다른 설정은 작동을 멈 춥니 다. 예를 들어, jsFiddle을 다시로드 한 다음 "set $ ('. snapHolder'). css ('left', '-50px')" 링크를 클릭하십시오. 끌기가 더 이상 작동하지 않습니다. 마찬가지로 첫 번째 스냅까지 스크롤하면 스크롤이 더 이상 작동하지 않습니다. 여기

열 전에 스냅 영역에 화재 코드의 비트입니다 :

if (colOffset > (colWidth - snapSize) && colOffset < colWidth) { 
     inAfter = false; 
     if (!inBefore) { 
      inBefore = true;     
      console.log("before"); 
      $('.'+snapHolder).css('left', '-' + fullWidth*(colNum+1) + 'px'); 
      $handle.parents(':eq(2)').find('.'+dragHandle).css({'left': leftPosition}); 
     } 
    } 

및 열 후 : 여기

} else if (colOffset < snapSize) { 
    inBefore = false; 
    if (!inAfter) { 
     inAfter = true; 
     console.log("after"); 
     $('.'+snapHolder).css('left', '-' + fullWidth*colNum + 'px'); 
     $handle.parents(':eq(2)').find('.'+dragHandle).css({'left': leftPosition}); 
    } 
} 

답변

0

내가 눈치 문제입니다. "right"속성을 사용하여 snapHolder의 위치를 ​​설정합니다. 그러나 "왼쪽"속성을 스냅 위치로 사용합니다.

"left"속성을 설정하면 "right"속성이 무시됩니다.

이렇게 붙어있어. 왼쪽 또는 오른쪽을 사용하십시오.

둘 다 사용할 수 없습니다.

+0

나는이 줄을 실제로 변경했다고 생각했지만 $ ('.'+ snapHolder) .css ('left', snapScrollPos2 + 'px'); 같은 일이 발생합니다. 실제로 하단의 $ ('. snapHolder'). css ('left', '-50px') 링크를 클릭하면 'right'속성이 설정되지 않은 상태에서 크롤링이 중단된다는 것을 알 수 있습니다. –

+0

"왼쪽"을 모두 "오른쪽"으로 변경하면 효과가 있기 때문에 두 번 확인해야합니다. http://jsfiddle.net/AJMn7/ – vinhboy

+0

바이올린에서 스크롤이 작동하지만 스냅이 끊어졌습니다. 앞에서 말한 것처럼 위치 속성의 설정은 다른 설정을 위반하는 것 같습니다. 어떤 설정이 작동하는지 간단하게 전환했습니다. –

관련 문제