Jquery removeClass不工作

时间:2010-03-29 01:45:30

标签: jquery class conditional removeclass

我的网站在这里:http://treethink.com

我要做的是右侧的新闻报道器,它位于jquery函数中。该功能立即启动并提取新闻自动收报机,然后按预期收回。当导航它向div添加一个类时,该函数然后检查它是否应该停止提取/缩回。一切都很好。

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

它不是找不到的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();

    });

谢谢,

瓦德

2 个答案:

答案 0 :(得分:2)

由于这是“jquery removeClass无法正常工作”的热门搜索结果,或许我可以发布最常见的解决方案来解决这类问题。

不要这样做:

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

执行此操作:

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

答案 1 :(得分:1)

您网站上的代码版本与您在此处复制的版本不同。

现场网站上的版本有:

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

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

    newsTicker();

});

而不是你在这里复制的内容:

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

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

    newsTicker();

});

我可以确认实时网站代码未运行(使用Chrome Developer Console断点进行检查)。

另外,考虑将Jquery升级到最新的1.4.2,这将会发现影响代码的任何其他错误。