2

私のサイトはこちら: http://treethink.com

私が行っているのは、jquery 関数内にある右側のニュース ティッカーです。この関数はすぐに開始され、ニュース ティッカーを抽出し、必要に応じて撤回します。ナビゲーションがdivにクラスを追加すると、関数はそれをチェックして、抽出/撤回を停止する必要があるかどうかを確認します。これはすべてうまくいきます。

私が抱えている問題は、(コンテンツ ウィンドウで) 閉じるボタンをクリックした後、removeClass が機能しないことです。これは、ウィンドウが開いていると認識し続けるため、関数内の条件文によって抽出と再格納が行われないことを意味します。単純な firebug チェックでは、クラスが削除されていないことが示されています。

一般的に「a」タグだけに変更しようとしたため、見つからないのはcboxClose IDではありませんが、それでも機能しないため、jQueryと関係があることは確かです。コールバックが機能しているかどうかを確認するためのクイック alert() も提案されましたが、これが何であるかはわかりません。

コードは次のとおりです。

/* 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();

    });

ありがとう、

ウェイド

4

2 に答える 2

1

サイトのコードのバージョンは、ここにコピーしたものとは異なります。

ライブサイトのバージョンには次のものがあります。

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

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

    newsTicker();

});

ここにコピーしたものの代わりに:

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

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

    newsTicker();

});

ライブ サイト コードが実行されていないことを確認できます (Chrome デベロッパー コンソールのブレークポイントを使用して確認しました)。

余談ですが、Jquery を最新の 1.4.2 にアップグレードすることを検討してください。これにより、コードに影響を与える他のバグが検出されます。

于 2010-03-29T02:43:48.910 に答える