2010-03-29 105 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');