2010-03-29 4 views
2

Мой сайт находится здесь: http://treethink.comJquery removeClass Не рабочая

То, что я собираюсь это новостной информер на праве, который находится внутри функции JQuery. Функция запускается сразу и извлекает тикер новостей, а затем втягивает его, как следует. При навигации он добавляет класс в div, который функция затем проверяет, не стоит ли прекращать извлечение/втягивание. Все это прекрасно работает.

Проблема, с которой я столкнулась, заключается в том, что после нажатия кнопки закрытия (в окне содержимого) removeClass не будет работать. Это означает, что он продолжает думать, что окно открыто, и поэтому условное выражение внутри функции не позволит ему извлечь и снова втянуть. С простой проверкой firebug он показывает, что класс не удаляется.

Это не идентификатор cboxClose, который он не находит, потому что я попытался изменить его на теги «вообще», и он все равно не будет работать, так что это точно связано с 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(); 

    }); 

Спасибо,

Wade

ответ

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 не работает», возможно, я могу опубликовать наиболее распространенное решение этой проблемы.

Не делайте этого:

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

ли это:

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