2012-04-02 3 views
0

그래서 이상한 문제가 있습니다. 을 사용하여 클릭 이벤트를 적용 할 <a/> 태그가 있습니다. 여기서 문제가 발생합니다. <a/> 태그를 클릭 할 때마다 태그에 또 다른 클릭 이벤트가 추가 된 것으로 보입니다. 내 JS 여기jQuery로 여러 클릭 이벤트 추가

<a href="#" id="next-arrow" class="nav-arrows inactive"></a> 

그리고 :

그래서 나는 태그와 같은있다.

$('body').on('click', '#next-arrow', function(e) { 
    if($(this).hasClass('active')) { 
     $('body').addClass('loading-cursor'); 
     document.location.hash=step_names[current_step]; 
     $(this).removeClass('active').addClass('inactive'); 
     $('#tools').append(loader); 
     $('#tools').find('.loader-outer').fadeIn('fast', function() { 
       //Do some stuff here once the loader is faded in 
     }); //End loader FadeIn() 
    } 
    e.preventDefault(); 
}); 

그 기능은 $(function() {});

어떤 생각 발생 될 수 있습니다 무엇 하나 내? 나는 관련이없는 다른 요소들을위한 JS 코드를 가지고있다. 그러나 누군가가 아이디어를 갖고 있고 다른 코드를 원한다면 알려주십시오.

감사합니다.

PS입니다. 추가하고 싶습니다. jsFiddle을 복제하고 복제하려고 시도했지만 복제 할 수 없습니다. 그래서 문제가 무엇인지 모르겠다.

+0

확인 일 또는 내 연구 기간 동안 두 jQuery를에 대해 더 ... 배우했다. 'body'에 바인딩되어 있지만,'a' 태그를 클릭했을 때만 해고됩니다. 이 메소드는 jQuery.live를 jQuery 1.7로 대체한다. – LeeR

+0

수정. e.preventDefault(); 대신'return false'를 사용해보십시오. 이벤트 처리기에서'false'를 반환하면 자동으로'event.stopPropagation()'과'event.preventDefault()'가 호출됩니다. – JFK

+0

개발하는 동안 어떤 브라우저를 사용하고 있습니까? jQuery로'body'를 선택하면 null을 리턴한다는 또 다른 질문을하는 동안 주목을 받았습니다. 왜 아직 (몸체가 DOM에서 노드라고 생각 하는가?) 안전하지 못하다면, 널리 받아 들여지는'$ (document)'를 사용하거나 가능한 한 더 가까운 조상으로 옮기고 싶을 것이다. –

답변

0

시작 참고 : 여기에이 답변을 추가하거나 의견을 말씀해 주시겠습니까?

그래서 문제를 발견했습니다. 로더를 추가 한 다음 클래스 선택기를 사용하여 로더를 페이드 한 다음 로더를 페이드 아웃시키고 DOM에서 요소를 제거하지 않았습니다.

그래서 나는이 함수를 호출 한 다음에, 그것은 그래서 ... 등

그것을 두 로더 페이딩, 로더를 추가 한 다음 각 로더, 중간 기능을 실행되었고, 나는 한 번 로드 된 모든 것, 난 그냥 DOM에서 로더 요소를 제거하고 모두 다시 행복합니다. 도움을

감사 어쨌든 ... 나는

0

<a> 태그의 ID을 명시 적으로 선택하는 선택기를 사용하지 않는 이유는 무엇입니까?

$('#next-arrow').bind('click', function (e){ 
    . 
    . 
    . 
}); 

또는 같은 문제가있는 경우, 그냥 바인딩하기 전에 .unbind('click')를 사용하여 <a> 태그의 클릭 이벤트를 바인딩을 해제 비슷 해요.

관련 문제