1

申し訳ありませんが、質問を正しくしているかどうかわかりません。ユーザーが日付を変更すると、ページ上の日付のカウントダウンが変更されます。日付が複数回変更された場合、すべての日付変更が点滅します。以前の情報をどこかに保存していると思います。私はvarsをクリアしようとしました。

var deal_yeax = '';

運がなければPHPで行うように

$('#deal_end').focusout(function() {
var deal_end = $("#deal_end").val();
var array = deal_end .split('-');
var deal_montx = array[0];
var deal_dax = array[1];
var deal_yeax = array[2];

    deal_montx = deal_montx - 1;

    $(function(){
    ts = new Date(deal_yeax ,  deal_montx  ,  deal_dax  );
    $(".h").countdown({
    timestamp   : ts,
    callback    : function(days, hours, minutes, seconds){
    message_days = (days);
    var message_hours = (hours);
    $(".message_hours").text(message_hours + " Hours");
    var message_minutes = (minutes);
    $(".message_minutes").text(message_minutes + " Minutes");
    var message_seconds = (seconds);
        // Creat the display
        if ( message_days < 1 && message_hours < 1 ) { $(".message_seconds").text(message_seconds  + " Seconds"); }
        else if ( message_days < 1 && message_hours > 1 ) {  }
        else if ( message_days == 1 ) { $(".message_days").text(message_days + " Day"); }
        else { $(".message_days").text(message_days + " Days"); }

        if ( message_days < 1 && message_hours < 1 && message_minutes < 1 && seconds < 1 ) {
        $(".hide_my_buy_button").fadeOut("fast"); 
        }
    }
});
});
});
4

2 に答える 2

3

から「フォーカスアウト」するたびに、イベントを に#deal_end添付します。どのように機能するか正確にわからなくても(ソースを提供していただけると助かります!)、問題を解決する 1 つの方法は、JQuery の関数を使用してイベントの既存のリスナーを削除してから、新しいリスナーを追加することです。 .countdown.hcountdown(...)unbind(...)

この問題の例を次に示します。

<!-- HTML -->
<div>
    <input id="text" />
    <button id="clicker" />
</div>

<!-- Javascript -->
$('#text').focusout(function() {
    var text = this.value;

    // Everytime #text is "focused out", a new event is registered with #clicker.
    $('#clicker').click(function() {
        console.log('Value: ' + text);
    });
});

...そして、問題を解決する方法は次のとおりです(これは多くの方法の1つにすぎません。この方法はおそらく最もエレガントではありませんが、とにかくです。)

$('#text').focusout(function() {
    var text = this.value;

    $('#clicker').unbind('click');
    // Everytime #text is "focused out", a new event is registered with #clicker.
    $('#clicker').click(function() {
        console.log('Value: ' + text);
    });
});

結論: focusout(...) は、トリガーされるたびに新しいものを追加しているcountdownようです。それがあなたが抱えている問題かもしれません。

これが役立つかどうかわかりませんか?知っておきましょう。

PS JSFiddle に合わせて: http://jsfiddle.net/PE9eW/

于 2012-04-06T20:37:43.527 に答える
1

問題は、日付の変更をフラッシュするためにコードで使用している .countdown 関数にあるようです。新しいカウント ダウン オブジェクトを $(".h") に割り当てると、プラグインまたは関数はおそらく何らかのイベント ハンドラーまたは間隔をそれに割り当てますが、再度呼び出されたときに古いものをクリアしないようです。カウントダウンごとにすべての日付が点滅する理由。したがって、手動で行う必要があります。外部プラグインを使用しているか、独自の関数であるかはわかりませんが、関数を呼び出すときに要素に割り当てられている既存のイベントまたは間隔をクリアする必要があります。使用しているプラ​​グインを教えていただくか、それが独自の機能である場合はコードを表示していただけると助かります。( .countdown() 参照)

于 2012-04-06T20:24:55.987 に答える