2014-10-19 5 views
1

이상한 방식으로 트리거되는 이벤트에 몇 가지 문제가 있습니다. 열려 쳤고 jsfiddle에 몇 번을 닫으면 당신은 무슨 일이 일어나고 있는지 볼 수 아래 :Slideout 버그 트리거링 두 번

http://jsfiddle.net/rzs7x4ab/5/

$('.btn-open-wrapper').on('click', function (event) { 
    event.stopPropagation(); 
    $(".blackboard-wrapper").one("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd", function (event) { 
     $('.btn-open-wrapper').addClass('is-hidden'); 
     $('.btn-close-wrapper').addClass('is-visible'); 
    }); 
    $('.blackboard-wrapper').addClass('is-open'); 
}); 


$('.btn-close-wrapper').on('click', function (event) { 
    $('.btn-open-wrapper').removeClass('is-hidden'); 
    $('.btn-close-wrapper').removeClass('is-visible'); 

    event.stopPropagation(); 
    $(".btn-close-wrapper").one("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd", function (event) { 
     $('.blackboard-wrapper').removeClass('is-open'); 
    }); 
}); 
+0

... 무슨 일입니까? 예상되는 결과는 무엇입니까? –

+0

두 번째로 열면 처음처럼 검은 색 사각형이 열려 있지 않은 것을 알 수 있습니다. 두 번째로 열면 첫 번째와 똑같이 작동합니다. – MarioD

+1

다른 브라우저에서 시도해야만했습니다. ** 문제는 ** Chrome에서만 발생합니다. ** FF는 잘 수행하지만 (위의 내 의견의 이유) –

답변

1

(파이어 폭스 꽤 잘 수행)
을 이유는 CamelCase를 transitionEnd (당신이 사용하지 않은 것입니다)

Fixed (test in Chrome)

+0

로코, 놀라운 캐치 - 고마워요. – MarioD

+0

@MarioD 당신은 환영합니다 :) –

0

당신은 혼합 닫기를 클릭 할 때 표현식을 수정하십시오. Here's a working JSFiddle을 코드와 비교하십시오. 예를 들어

:

$(".btn-close-wrapper").one("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd", function (event) { 
    $('.blackboard-wrapper').removeClass('is-open'); 
}); 

가 있어야한다 :

$("#blackboard-wrapper").one("transitionEnd webkitTransitionEnd oTransitionEnd MSTransitionEnd", function (event) { 
    $('#btn-open-wrapper').removeClass('is-hidden'); 
    $('#btn-close-wrapper').removeClass('is-visible'); 
}); 

편집 : 아 기다리고, 그것은 낙타 표기법의 문제입니다. 내 코드는 다른 동작을합니다.