私は最初のjQueryプラグインを使用しています。これは、単純なカウントダウンタイマーで、ターゲット日付を設定するオプションがあります。目的は、提供された目標日付&時間までカウントダウンするプレーンテキストクロックを取得することです。私の人生では、プラグイン内でsetTimeoutやsetInvervalを使う方法を理解できないので、実際にはカウントダウンします。一日中、stackoverflowや他の情報源を使って掘り起こしましたが、解決策を見つけることができませんでした。ここで jQueryプラグイン(setTimeoutまたはsetIntervalを使用)
は、私が持っているものです:。(function($){
$.fn.clock = function(options) {
// ESTABLISH DEFAULTS
var settings = $.extend({
'target' : '07/21/2013 09:00:00', // mm/dd/yyyy hh:mm:ss
}, options);
return this.each(function() {
// calculate milliseconds to target
tarDate = new Date(settings.target);
dateNow = new Date();
amount = tarDate.getTime() - dateNow.getTime();
delete dateNow;
// set label
label = settings.title;
// generate output
if(amount <= 0) {
out = '000:00:00:00';
} else {
td = 0; th = 0; tm = 0; ts = 0; out = ''; // reset everything
amount = Math.floor(amount/1000); // kill the milliseconds
td = Math.floor(amount/86400); // calculate days to target
amount = amount%86400; // convert amount to days
th = Math.floor(amount/3600); // calculate hours to target
amount = amount%3600; // convert amount to hours
tm = Math.floor(amount/60); // calculate minutes to target
amount = amount%60; // convert amount to minutes
ts = Math.floor(amount)+1; // calculate seconds to target
out += (td<=99?'0':'') + (td<=9?'0':'') + td + ':';
out += (th<=9?'0':'') + th + ':';
out += (tm<=9?'0':'') + tm + ':';
out += (ts<=9?'0':'') + ts;
}
// assemble and pump out to dom
$(this).html(out);
// set refresh rate
??????
});
};
})(jQuery);
どのように動作するのかは分かりますが、プラグインのオプションをupdateClock関数に渡す方法を教えてください。 $ .fn.clock内でsetTimeoutを使用する方法はありますか?ところで良い記事、リンクありがとう。 – codybuell
@codybuell私の更新された答えを見てください。基本的には、要素を作成するときにオプションを保存し、メソッドを呼び出すときに 'data'関数を使用して取得します(個々のクロックで使用する場合は状態を維持するためにも使用できます)。要素の作成直後に更新関数を呼び出すことができ、最後に 'setTimeout'を呼び出します。または、あなたの選択を直接呼び出すだけです。 – mgibsonbr