2012-04-03 5 views
0

좋아요, 슬라이드/탭을 앞뒤로 움직이고 유동적 인 애니메이션 메뉴를 만들고 있습니다. 클릭 한 탭에 붙이는 애니메이션 이벤트를 바인딩 해제하는 것 외에는 모두 작동합니다. 그래서 꽤 많은 사용자가 탭을 클릭 리스너는 애니메이션의 끝 나는 이전에 클릭 한 탭에 리스너 바인딩을 해제하려면 다음 탭의 클릭에 연결되어 있습니다. 그러나 어떤 이유로 든 .off 기능을 사용할 수 없습니다. 다음은 내 코드입니다.. 오프 애니메이션 이벤트가 없습니다.

var $featuredTab = this.$('.featured'), 
    $tabContainer = $(e.target).parent(), 
    $menu = this.$el, 
    index = $tabContainer.index(), 
    count = $tabContainer.parent().children().length; 

    if($featuredTab.length > 0) { 
     $menu.off('animationend webkitAnimationEnd MSAnimationEnd oAnimationEnd', $featuredTab, function() { 
      console.log('off'); 
      //do stuff 
     }); 
    } 

    $tabContainer.addClass('featured'); 


    $menu.on('animationend webkitAnimationEnd MSAnimationEnd oAnimationEnd', $tabContainer, function(e) { 
      console.log(e.originalEvent); 
      //do stuff 
    }); 

오프 이벤트가 발생하지 않는 이유는 무엇입니까?

+0

'this'는 무엇을 나타 냅니까? –

+0

그것은 jQuery 이벤트의 바인딩 해제에 관한 것입니다. – Francisc

답변

0

두 번째 매개 변수를 선택자로 취급한다고 가정하면 on이 잘못 사용됩니다. 두 번째 매개 변수는 개체를 전달하는 선택기 (문자열)입니다. 두 번째 (선택기) 및 세 번째 (데이터) 매개 변수는 선택 사항입니다.

여기를보세요 - http://api.jquery.com/on/

이 시도 할 수 있습니다하지만.

$menu.off('animationend webkitAnimationEnd MSAnimationEnd oAnimationEnd'); 
+0

공 - u r 오른쪽. "selector : 선택기 문자열" – user834418

+0

@ShankarSangoli 선택자는 선택 사항입니다. 데이터 객체를 전달하면 트리거 된 이벤트 핸들러에 대해 'event.data'에서 사용할 수 있습니다. – scurker

+0

어디서나 코드의 데이터로 사용되는 것을 볼 수 없습니다. – ShankarSangoli

0

off()은 이벤트를 트리거하지 않기 때문에.

off() 메서드는 .on()과 연결된 이벤트 처리기를 제거합니다.

그것은 이전에 메뉴에 부착 된 모든 이벤트 바인딩을 해제하려면 다음과 같습니다

// this removes ALL events 
$menu.off('animationend webkitAnimationEnd MSAnimationEnd oAnimationEnd'); 

만, 이벤트를 제거 문서에서 this example를보고 싶다면

.