2011-09-06 5 views
0

div 레이어 200 픽셀을 위아래로 움직이는 작고 간단한 코드를 만들었습니다. 그러나 마우스 오버 대신 클릭하여 레이어를 이동 시키길 원합니다. mouseleave는 여전히 괜찮습니다!클릭하면 div 레이어 이동

레이어가 위아래로 있는지 확인하려면 어떻게해야합니까? 레이어가 200 픽셀 이상인 경우에만 레이어 -200 픽셀을 이동하려고합니다.

<script> 
    $(".block").mouseenter(function() { 
    $(".block").animate({"bottom": "+=200px"}, 300); 
    }).mouseleave(function() { 
     $(".block").animate({"bottom": "-=200px"}, 200); 
    }); 
</script> 

답변

4

<script> 
    $(".block").click(function() { 
    $(".block").not('.up').addClass('up').animate({"bottom": "+=200px"}, 300); 
    }).mouseleave(function() { 
    $(".block").filter('.up').removeClass('up').animate({"bottom": "-=200px"}, 200); 
    }); 
</script> 
+0

잘 작동하지만 클릭이 이루어질 때마다 계속 올라갑니다. 그것이 위 또는 아래인지 알지 못하며, 마우스 왼쪽 버튼에 반응하지 않습니다. – user681061

+0

ye, 오류가있었습니다. ('filter' 대신에'not') 이제는 잘 작동하는 – mreq

+0

을 사용해야합니다. 정말 엉덩이에 지체와 통증이되는 것에 대해 미안합니다 .. 나는 그것이 올라가거나 내려가는 경우 addClass 'up'이라고 말합니다. 문제는 클릭하고 레이어를 계속 클릭하면 아래로 올라가는 것을 계속하는 것입니다. 'up'이 mouseleave로 내려 가면, 아래로 가면 클릭 소리가납니다. – user681061

0

는 대신 '.mouseenter'의 '.click'를 사용하려고 했 클래스를 사용할 수 있습니까?

+0

문제는 그 레이어의 내부를 클릭 할 때마다 200px까지 레이어를 이동한다는 것입니다. 그것이 위 또는 아래인지를 알아야합니다. – user681061

1
<script> 
    var direction = 1; 
    var distance = 200; 
    $(".block").click(function() { 
    $(".block").animate({"bottom": "+=" + direction * distance + "px"}, 300); 
    direction -= direction * 2; // knew there was a formula for that :P 
    }); 
</script> 

이렇게하면됩니다.

+0

잘 작동합니다! 클릭 수는 늘리지 만 mouseleave는 낮추려면 어떻게해야합니까? 이제 클릭만으로 위아래로 움직입니다. – user681061

관련 문제