2012-10-24 2 views
2

링크를 클릭하면 트리거 할 애니메이션이 있습니다. 애니메이션을 별도로 실행하면 정상적으로 작동합니다. 하지만 jquery toggle()을 사용하면 더 이상 작동하지 않습니다. 아무도 왜 쉽게 볼 수 있습니까? 작동 toggle()없이Jquery가 맞춤 애니메이션을 토글합니다.

(별도 각을 실행) :

$('#sign-in-fx').click(function() { 
    $('.login_form').animate({ width: '273' }, 'slow', 'easeInOutQuart'); 
    //$('.login_form').animate({ width: '1' }, 'slow', 'easeInOutQuart'); 
}); 

toggle()와 아무 일도 발생하지 :

$('#sign-in-fx').click(function() { 
    $('.login_form').toggle(
     function() { 
      $(this).animate({ width: '273' }, 'slow', 'easeInOutQuart') 
     }, 
     function() { 
      $(this).animate({ width: '1' }, 'slow', 'easeInOutQuart') 
     } 
    ); 
}); 

이 내가 다음과 같이도 할 수 있다고 생각 jQuery toggle animation

+0

참조 http://api.jquery.com/toggle/'toggle()'함수를 잘못 사용하는 것 같습니다. – Grzegorz

+0

@ Grzegorz http://api.jquery.com/toggle-event/와 관련이 있습니다. – Reflective

+0

@ Reflective : Duh! 감사! – Grzegorz

답변

3

지금 나는이 원래하고 싶었던 것입니다 생각 :

$('#sign-in-fx').toggle(
     function() { 
      $('.login_form').animate({ width: '273' }, 'slow', 'easeInOutQuart') 
     }, 
     function() { 
      $('.login_form').animate({ width: '1' }, 'slow', 'easeInOutQuart') 
     } 
); 
애니메이션을 요소에 toggle()를 호출했다

을,하지만 click를받을 요소를 호출 할 수있다 행사.

+0

내가 게시하고 싶었던 사마 답 : – GomatoX

+0

아직도 사용되지 않습니까? – adeneo

+0

사실 저는 메모를주고 작동 코드를 제공하면서 똑같은 대답을합니다. 그러나 조금 늦을 수 있습니다 :) – Reflective

0

유사하다 :

$('#sign-in-fx').click(function() { 
    if (! $('.login_form').is(':animated')) { //if no animation running 
     if ($('.login_form').width() > 1) { 
      $('.login_form').animate({ width: '1' }, 'slow', 'easeInOutQuart'); 
     } else { 
     $('.login_form').animate({ width: '273' }, 'slow', 'easeInOutQuart'); 
     } 

    } 
}); 
1

toggle() 사용하는 방식은 deprecated입니다! 당신이 전역을 좋아하지 않는 경우에 당신은 항상 데이터()를 사용할 수 있습니다,

var flag = true; 

$('#sign-in-fx').on('click', function() { 
    $('.login_form').stop(true, true) 
        .animate({ width: flag?'273':'1' }, 'slow', 'easeInOutQuart'); 
    flag=!flag; 
});​ 

FIDDLE

을 또는 :

는 플래그를 사용하여 직접 애니메이션 폭을 전환,과 같이

FIDDLE

0

$('#sign-in-fx').on('click', function() { 
    var flag = $('.login_form').data('flag')!=undefined?$('.login_form').data('flag'):true; 
    $('.login_form').stop(true, true) 
        .animate({ width: flag?'273':'1' }, 'slow', 'easeInOutQuart') 
        .data('flag', !flag); 
});​ 
는 확인이 이루어집니다 있습니까 document.ready? 귀하의 코드가 잘 보인다.

$(function() { 
     $('.login_form').toggle(
      function() { 
       $(this).animate({ width: '273' }, 'slow', 'easeInOutQuart') 
      }, 
      function() { 
       $(this).animate({ width: '1' }, 'slow', 'easeInOutQuart') 
      } 
    ); 
    }); 
+0

입니다. 내가보기에는 너무 피곤해서 오타가 없으면 제대로 작동하지 않는 이유를 생각할 수 없다. – greener

+0

이 답변을 편집 해보세요. '.toogle()'은 클릭을 확인하고 하나씩 추가 된 함수 (핸들러)를 실행합니다. 둘 이상일 수 있습니다. 코드에서 다른 링크를 클릭하고 있습니다. – Reflective

관련 문제