2010-03-29 5 views
2

내 사이트는 여기에 있습니다 : http://treethink.comJQuery와 removeClass가 작동하지

는 내가 가고있는 것은 JQuery와 함수 안에 오른쪽에 뉴스 시세입니다. 이 함수는 즉시 시작하여 뉴스 티커를 추출한 다음 필요한대로 수축시킵니다. 네비게이션이 div에 클래스를 추가하면 함수는 추출/철회를 중지해야하는지 확인합니다. 이 모든 것이 훌륭하게 작동합니다.

문제는 콘텐츠 윈도우에서 닫기 버튼을 클릭하면 removeClass가 작동하지 않는다는 것입니다. 이것은 윈도우가 열려 있다는 것을 계속 유지함을 의미하며, 따라서 함수 내부의 조건문은 추출하고 다시 되돌릴 수 없습니다. 간단한 방화타 수표로 클래스가 제거되지 않는 것을 보여줍니다.

일반적으로 "a"태그로 변경하려고했기 때문에 찾을 수없는 cboxClose ID가 아니며 여전히 작동하지 않으므로 jQuery와 관련이 있습니다. 누군가 콜백이 작동하는지 확인하기 위해 빠른 알림()을 제안했지만 이것이 무엇인지 잘 모르겠습니다.

/* News Ticker */ 

    /* Initially hide all news items */ 

    $('#ticker1').hide(); 
    $('#ticker2').hide(); 
    $('#ticker3').hide(); 

    var randomNum = Math.floor(Math.random()*3); /* Pick random number */ 

    newsTicker(); 

    function newsTicker() { 

     if (!$("#ticker").hasClass("noTicker")) { 

      $("#ticker").oneTime(2000,function(i) { /* Do the first pull out once */ 

       $('div#ticker div:eq(' + randomNum + ')').show(); /* Select div with random number */ 

       $("#ticker").animate({right: "0"}, {duration: 800 }); /* Pull out ticker with random div */ 

      }); 

      $("#ticker").oneTime(15000,function(i) { /* Do the first retract once */ 

       $("#ticker").animate({right: "-450"}, {duration: 800}); /* Retract ticker */ 

       $("#ticker").oneTime(1000,function(i) { /* Afterwards */ 

        $('div#ticker div:eq(' + (randomNum) + ')').hide(); /* Hide that div */ 

       }); 

      }); 

      $("#ticker").everyTime(16500,function(i) { /* Everytime timer gets to certain point */ 

       /* Show next div */ 

       randomNum = (randomNum+1)%3; 

       $('div#ticker div:eq(' + (randomNum) + ')').show(); 

       $("#ticker").animate({right: "0"}, {duration: 800}); /* Pull out right away */ 


       $("#ticker").oneTime(15000,function(i) { /* Afterwards */ 

        $("#ticker").animate({right: "-450"}, {duration: 800});/* Retract ticker */ 

       }); 

       $("#ticker").oneTime(16000,function(i) { /* Afterwards */ 

        /* Hide all divs */ 

        $('#ticker1').hide(); 
        $('#ticker2').hide(); 
        $('#ticker3').hide(); 

       }); 

      }); 

     } else { 

      $("#ticker").animate({right: "-450"}, {duration: 800}); /* Retract ticker */ 

      $("#ticker").oneTime(1000,function(i) { /* Afterwards */ 

       $('div#ticker div:eq(' + (randomNum) + ')').hide(); /* Hide that div */ 

      }); 

      $("#ticker").stopTime(); 

     } 

    } 

    /* when nav item is clicked re-run news ticker function but give it new class to prevent activity */ 

    $("#nav li").click(function() { 

     $("#ticker").addClass("noTicker"); 

     newsTicker(); 

    }); 

    /* when close button is clicked re-run news ticker function but take away new class so activity can start again */ 

    $("#cboxClose").click(function() { 

     $("#ticker").removeClass("noTicker"); 

     newsTicker(); 

    }); 

감사합니다,

웨이드

답변

1

사이트의 코드의 버전은 여기에 복사 한 것과 다른 : 여기

는 코드입니다.

라이브 사이트의 버전이 있습니다 대신 당신이 여기에서 복사 한 내용의

$("a").click(function() { 

    $("#ticker").removeClass("noTicker"); 

    newsTicker(); 

}); 

:

$("#cboxClose").click(function() { 

    $("#ticker").removeClass("noTicker"); 

    newsTicker(); 

}); 

나는 라이브 사이트 코드가 실행되지 않는 것을 확인할 수 있습니다 (사용 확인할 Chrome 개발자 콘솔 중단 점).

다른 점은 Jquery를 최신 1.4.2 버전으로 업그레이드하는 것이 좋습니다. 그러면 코드에 영향을 미치는 다른 버그가 발생합니다.

+0

내가 사이트를 업데이트하지만 관계없이 확실히 작동하지 않습니다. 나는 jQuery를 업데이트하려고 노력할 것이지만, 만약 그것을 깨뜨릴 지 모르겠다. 거기에는 특정 버전에 의존할만한 것들이있다. –

+0

문제가 해결되지 않았습니까? –

+0

그것은 어떤 링크를 removeClass에 붙이더라도 작동하지 않을 것입니다. addClass를 연결하려고 시도했는데 작동하지 않습니다. 즉, 문제는 링크가 아니며 removeClass가 아니라는 것을 의미합니다. 다른 것입니다. –

2

"jquery removeClass not working"에 대한 최상위 검색 결과이므로 아마도 가장 일반적인 솔루션을이 유형의 문제에 게시 할 수 있습니다.

이 작업을 수행하지 마십시오

$('#selector').removeClass('.active'); 

이를 수행

$('#selector').removeClass('active'); 
관련 문제