2013-04-16 3 views
3

jQuery animate를 항상 사용하지만 이번에는 어떤 이유로 실패합니다. 그것은 그것을 작동합니다 closeBtn 클릭 후 '$ (this) .animate'를 타겟팅하려고하면 작동합니다. 여기 jQuery 애니메이션이 작동하지 않는 이유는 무엇입니까?

내 HTML의 일부입니다합니다 (relivant 부품, 그래 내가 jQuery 라이브러리라고했다) 여기
<div id='lightBox' style="opacity:0;"> 
    <div id='closeBtn'> 
    </div> 
    <div id='lightBoxContent'> 
    </div><!--lightBoxContent--> 
</div><!--lightBox--> 

내 JQuery와

$(document).ready(function() 
{ 
    $('#quoteBtn').click(function() 
    { 
     $('#lightBox').animate({ 
      opacity:'1', 
      height:'560px' 
     }, 300, function() { 
      $('#lightBoxContent').html(output); 
     }); 


     $('#closeBtn').click(function() 
     { 
      //alert('click'); 
      $('#lightBox').animate({ 
       opacity:'0' 
      }, 300, function() { 
       //alert('first animation complete'); 
       $('#lightBox').animate({ 
        height:'0px' 
       }, 300, function() { 
        //alert('second animation complete'); 
       }); 
      }); 
     }); 
    }); 
}); 

내 CSS (그렇지 않은 것입니다 정말 이에 대한 요구 사항이지만 안전한 측정을 위해 포함 시켰습니다.

#lightBox { 
    width:780px; 
    background-color:white; 
    position:fixed; 
    margin-left:-400px; 
    margin-top:-300px; 
    left:50%; 
    top:50%; 
    z-index:9999; 
    -webkit-box-shadow: 0px 0px 200px 50px ; 
    box-shadow: 0px 0px 200px 50px ; 
    padding:20px; 
} 
+0

그 ID는 한 번만 사용하셨습니까? – adeneo

+0

console.log ("test")를 사용해 보셨습니까? 다양한 단계를 거쳐 코드가 어떤 줄을 나누고 있는지 확인하십시오. 또는 오류가 있는지 확인하기 위해 콘솔을 살펴 보셨습니까? – ntgCleaner

+2

이와 같은 경우 jsfiddle도 만들어야합니다. 우리의 삶을 편하게 해줍니다. – user1048676

답변

4

position: absolute;에 또는 position: relative; 당신은 #quoteBtn이 클릭 될 때 호출되는 클릭() 함수의 $('#closeBtn').click(function() 외부 이동하려는. 클릭 한 번으로 클릭 할 수 없으므로 절대로 호출되지 않기 때문입니다.

$(document).ready(function() 
{ 
    $('#quoteBtn').click(function() 
    { 
     $('#lightBox').animate({ 
      opacity:'1', 
      height:'560px' 
     }, 300, function() { 
      $('#lightBoxContent').html(output); 
     });  
    }); 

    $('#closeBtn').click(function() 
    { 
     //alert('click'); 
     $('#lightBox').animate({ 
      opacity:'0' 
     }, 300, function() { 
      //alert('first animation complete'); 
      $('#lightBox').animate({ 
       height:'0px' 
      }, 300, function() { 
       //alert('second animation complete'); 
      }); 
     }); 
    }); 

}); 

업데이트 : 여기

그것이 어떻게 보일지입니다 좋아요 ... 여기 그런 다음 "가까이 계속 된 $('#lightBox').stop().animate({$('#lightBox').animate({을 설정하려는 일부 2.

입니다 "애니메이션.

+0

나는 그것을 보았다고 믿을 수 없다! 그러나 여전히 작동하지 않습니다. –

+0

여전히 작동하지 않는 것은 무엇입니까? – doitlikejustin

+0

알았어. 내 대답을 업데이트했습니다. – doitlikejustin

0

제가 틀렸을 때 수정하십시오,하지만 chang 이 보내고 :

position: fixed; 

+0

위치 : 고정; 나를 조금 긴장하게 만든다. 당신이 요소를 position으로 설정하지 않았다면 : css에서 절대적인 상대 위치 또는 절대 위치를 지정하면 jQuery가 애니메이션을 적용하지 않습니다. 위치가 확실하지 않은 경우 고정. –

+0

나는 항상 포커스가있는 패널을 원하기 때문에 fixed를 사용했기 때문에 사용자는 그것을 벗어날 수 없다. lightbox의 일종이다. 나는이 메서드를 사용했고 jquery animate로 고정 된 작업을했다. 그래, 모든 ID 만 사용된다. 문서 전체에 한번. 나는 테스트 목적으로 alert()를 사용합니다. –

관련 문제