2011-08-18 5 views
0
$("#rightControl").click(function(){ 
    $("#thumb_menu").animate({"left": "-=520px"}, "slow"); 
    var pos = $('#thumb_menu').position(); 
    if(pos.left < 0) { 
     $('#header') 
      .prepend('<span class="control" id="leftControl">Move left</span>') 
} 
}); 

#rightControl를 한 번 클릭하면 #thumb_menu이 -450px 왼쪽으로 이동하므로 if이 실행되어야하지만 제대로 작동하지 않습니다.위치가 X보다 작 으면 무언가를하십시오. Jquery

어디서 잘못 되었나요?

답변

2

장소를 ...

$("#rightControl").click(function() { 
    $("#thumb_menu").animate({ 
     "left": "-=520px" 
    }, "slow", function() { 
     var pos = $(this).position(); 
     if (pos.left < 0) { 
      $('#header').prepend('<span class="control" id="leftControl">Move left</span>') 
     } 
    }); 
}); 

당신이 부정적인 위치로 이동 알고 있다면 비록, I 당신은 if() 문장이 전혀 필요 없다고 생각합니다. 단지 콜백에서 .prepend()을 수행하십시오.

+0

감사합니다. patrick dw. 훌륭하게 작동합니다. 이 스크립트는 큰 스크립트의 일부일 뿐이므로 if 문이 필요합니다. div가 언제 다른 div의 가장자리에 있는지 알 필요가 있습니다. – Turnip

+0

@ 3rror404 : 천만에. 가장자리에서 벗어난 때를 더 정확하게 결정할 필요가 있다면,'.animate()'메소드는 애니메이션 동안 각 업데이트에 대해 발동되는'step :'콜백을 가진다. 그렇다면''slow '', function() {...}'을'{duration : "slow", step : function() {...}'으로 대체하십시오. – user113716

0

위치 방법은 문서에 상대적이 아닌 요소의 원래 위치 : 요소가 화면 밖으로 실제로 경우 http://api.jquery.com/position/

그래서 .position()< 0 될 것입니다. 요소를 이동하기 전에 요소의 원래 위치를 캡처 한 다음 그 요소가 작은 지 확인하십시오.

관련 문제