2011-01-30 3 views
1

콘텐츠 슬라이더가 있습니다. 추가적으로 "이전"& "다음"버튼을 만들었습니다. 애니메이션이 완료되면 버튼을 클릭 할 수 있어야합니다 (애니메이션 길이는 500ms 임). 나는 그것을 해결하기 위해 노력 : 애니메이션 선택,하지만 작동하지 않습니다애니메이션이 작동하는 동안 jQuery 클릭 이벤트를 중지하려고합니다.

if (!$(".scrollContainer").is(':animated')) { 
    $(".nextItems a").click(function() { 
     $(".slideNavig").find('a.selected').removeClass('selected').parent().next().find("a").addClass('selected'); 
    }); 
} 
if (!$(".scrollContainer").is(':animated')) { 
    $(".prevItems a").click(function() { 
     $(".slideNavig").find('a.selected').removeClass('selected').parent().prev().find("a").addClass('selected'); 
    }); 
} 

또는 아주 간단하게, 내가 클릭 한 후 500ms로에 대한 이벤트를 클릭 버튼을 중지해야합니다. 누구든지 제발 도와 주실 래요?

+0

메이크 .unbind 결합 '()'방법 http://api.jquery.com/unbind/ –

+1

@aSeptik 사용하고 바인딩 해제하고 다시 바인딩이 나쁘다. 깃발이나 수표를 사용하여 묶는 댄스를하기보다는 이벤트를 처리해야하는지 결정하는 것이 훨씬 낫습니다. – PetersenDidIt

+0

@PetersenDidIt - 네 말이 맞아요! –

답변

4

이동을 경우 것은 당신의 클릭 이벤트 핸들러 내부에 움직이는 경우 확인 문 : 또한

$(".nextItems a").click(function() { 
    if (!$(".scrollContainer").is(':animated')) { 
     $(".slideNavig").find('a.selected').removeClass('selected').parent().next().find("a").addClass('selected'); 
    } 
}); 

$(".prevItems a").click(function() { 
    if (!$(".scrollContainer").is(':animated')) { 
     $(".slideNavig").find('a.selected').removeClass('selected').parent().prev().find("a").addClass('selected'); 
    } 
}); 

당신은 건조 할 수 귀하 다음과 같이하면 코드 :

$(".nextItems a").click(function() { 
    nextPrevItem('next'); 
}); 

$(".prevItems a").click(function() { 
    nextPrevItem('prev'); 
}); 
function nextPrevItem(direction) { 
    if (!$(".scrollContainer").is(':animated')) { 
     $(".slideNavig").find('a.selected').removeClass('selected') 
      .parent()[ direction ]() 
      .find("a").addClass('selected'); 
    } 
} 
+0

코드 중복을 제거하기 위해 +1해야합니다. – user113716

+0

네 말이 맞아! if 문은 이벤트 내부에 있어야합니다. 그러나 두 번째 솔루션은 모든 것을 능가합니다! 큰! 그래서 당신이 해냈습니다! 고마워요! – Thomas

2

당신은 핸들러 내부의 if 문이 필요합니다

$(".nextItems a").click(function() { 
    if (!$(".scrollContainer").is(':animated')) { 
     $(".slideNavig").find('a.selected').removeClass('selected').parent().next().find("a").addClass('selected'); 
    } 
}); 

$(".prevItems a").click(function() { 
    if (!$(".scrollContainer").is(':animated')) { 
     $(".slideNavig").find('a.selected').removeClass('selected').parent().prev().find("a").addClass('selected'); 
    } 
}); 
+1

+1 또한 나를 이길 초의 수이기도합니다. – lonesomeday

관련 문제