2010-03-29 75 views
2

我的网站是在这里:http://treethink.comjQuery的removeClass不工作

我已经打算是这是一个jQuery函数内右侧的新闻股票。该功能立即开始并提取新闻动态,然后按原样收回。当一个导航向div中添加一个类时,函数会检查它是否应该停止提取/回缩。这一切都很好。

我遇到的问题是关闭按钮被点击后(在内容窗口中),removeClass将无法正常工作。这意味着它不断思考窗口是否打开,因此函数内部的条件语句不会让它再次提取和收回。通过一个简单的萤火虫检查,它显示该班级没有被删除期间。

这不是cboxClose id,它没有找到,因为我试图将其更改为“a”标签,但仍然无法正常工作,因此肯定与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,但我不确定这是否会打破它,有些东西可能依赖于特定的版本。 – 2010-03-29 03:12:21

+0

好的更新工作正常,但没有解决问题。 – 2010-03-29 03:15:15

+0

看来,无论我将removeClass附加到它的哪个链接都不起作用,我也尝试将addClass附加到那里,并且它不起作用。这意味着问题不是链接,不是removeClass ...这是别的。 – 2010-03-29 03:39:48

2

因为这是“jquery removeClass not working”的热门搜索结果,我用了这个问题最常见的解决方案。

不要这样:

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

这样做:

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