0

ナビゲーションアイテムをクリックすると、右側のニュースティッカーが撤回され、抽出/タイマー機能が実行されなくなるようにしようとしています。私はそれを撤回させましたが、それでも抽出します。

私のやり方は、ナビゲーションボタンで「noTicker」クラスを追加し、カラーボックスの閉じるボタンでそれを削除することです。この関数は最初はページ上で実行され、「noTicker」クラスがない場合は、計画どおりにニュースティッカーを実行します。ナビゲーションボタンまたは閉じるボタンをクリックすると、関数が再度実行され、そのクラスがあるかどうかが再度確認されます。

したがって、クラスがある場合は、リトラクトして(つまり、クラスを適切に追加していることを意味する必要があります)、タイマー関数を実行しませんが、何らかの理由でタイマー関数を実行します。これが私のjQueryです。また、firebugによると、閉じるボタンがクリックされたときにクラスが適切に削除されていません。

/* 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 */

        });

    }

}

/* 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

1 に答える 1

1

noTimerクラスを#tickerdivに追加すると、everyTime()タイマーがキャンセルされるようには見えません。newsTicker()を最初に呼び出すと、おそらくこれが実行されるようになりますが、その後の呼び出しで停止することはありません。

正しいドキュメントを読んでいる場合は、タイマーに(文字列)ラベルを付けてから、それを停止するには、stopTime()を呼び出してラベルを指定できます。

これが私が作業しているドキュメントです:http: //plugins.jquery.com/project/timers

于 2010-03-28T23:56:33.280 に答える