jQuery タイマーの簡単なアプリケーションの説明_jquery

WBOY
リリース: 2016-05-16 18:17:36
オリジナル
1010 人が閲覧しました

便宜上、Jquery は JS の setTimeout メソッドと setInterval メソッドをカプセル化しています。アプリケーションの例を見てみましょう。

コードをコピーします コードは次のとおりです:
/**
* jQuery.timers - jQuery のタイマー抽象化
* Blair Mitchelmore 著 (blair DOT mitchelmore AT gmail DOT com)
* WTFPL に基づいてライセンスされています (http://sam.zoy.org/wtfpl/) )。
* 日付: 2009/10/16
*
* @著者 Blair Mitchelmore
* @バージョン 1.2
*
**/

jQuery.fn.extend({
everyTime: function(interval, label, fn,回) {
return this .each(function() {
jQuery.timer.add(this, 間隔, ラベル, fn, 回);
}); : function(interval, label, fn ) {
return this.each(function() {
jQuery.timer.add(this, interval, label, fn, 1);
}); >},
stopTime: function(label, fn) {
return this.each(function() {
jQuery.timer.remove(this, label, fn);
}); 🎜>}
}) ;

jQuery.extend({
タイマー: {
グローバル: [],
guid: 1,
dataKey: "jQuery.timer ",
正規表現: / ^([0-9] (?:.[0-9]*)?)s*(.*s)?$/,
powers: {
//はい、これはやりすぎです...
'ms': 1、
'cs': 10、
'ds': 100、
's': 1000、
'das' : 10000,
'hs ': 100000,
'ks': 1000000
},
timeParse: function(value) {
if (value == 未定義 || value == null )
return null;
var result = this.regex.exec(jQuery.trim(value.toString()));
if (result[2]) {
var num = parseFloat( result[1]);
var mult = this.powers[2]] || 1;
戻り値
} else {
戻り値; 🎜>},
add : function(要素, 間隔, ラベル, fn, 回) {
var counter = 0;

if (jQuery.isFunction(label)) {
if (!times)
times = fn;
fn = ラベル;

interval = jQuery.timer.timeParse(interval); 🎜>if (間隔のタイプ != '数値' || isNaN(間隔) || 間隔 return;

if (回数のタイプ != '数値' || isNaN(回) || 回 < 0)
回 = 0;

var timers (要素, this.dataKey) data(要素, this.dataKey, {});

if (!timers[label])
timers[label] = {};

fn.timerID = fn.timerID || this.guid ;

var handler = function() {
if (( counter >jQuery.timer.remove(要素, ラベル, fn);

handler.timerID = fn.timerID;

if (! fn.timerID])
timers[label][fn.timerID] = window.setInterval(handler,interval);

this.global.push( 要素 );
削除: function(element , label, fn) {
var timers = jQuery.data(element, this.dataKey), ret;

if ( timers ) {

if (!label) {
for ( label in timers )
this.remove(element, label, fn);
} else if ( timers[label] ) {
if ( fn ) {
if ( fn.timerID ) {
window.clearInterval(timers[label][fn.timerID]);
delete timers[label][fn.timerID]
} else {
for ( var fn in timers[label] ) {
window.clearInterval(timers[label][fn]);
delete timers[label][fn]; >}

for ( ret in timers[label] ) Break;
if ( !ret ) {
delete timers[label]; }

for ( ret in timers ) Break;
if ( !ret )
jQuery.removeData(element, this.dataKey)
}
}
}
});

jQuery(window).bind("unload", function() {
jQuery.each(jQuery.timer.global, function(index, item) {
jQuery.timer.remove(item) ;
})
});




コードをコピー🎜>

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


$("#close-button").click(function() {
$(this).oneTime(1000) , function() {
$(this ).parent(".main-window").hide();
})
$("#cancel-button"); ).click(function() {
$("#close-button").stopTime();
});


jQuery タイマー プラグイン アドレス:

http://plugins.jquery.com/project/timers

JavaEye フォーラムからの次の JQuery Timers アプリケーションのナレッジ

は 3 つの関数を提供します
1.間隔、[タイマー名]、関数式名、[制限数]、[関数プログラムの完了を待つ]) 2. oneTime (時間間隔、[タイマー名]、呼び出される関数) 3. [タイマー名], [関数名])
コードをコピー


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

/***************************************************** *********
* everyTime(time interval, [timer name], function name, [number limit], [wait for function program to complete])
****** *************************************************** *****/

//Execute function test() every 1 second
function test(){
//do something...
}
$('body').everyTime('1s',test);

//Execute every 1 second
$('body').everyTime('1s', function(){
//do something...
});

//Execute every 1 second, and name the timer as A
$('body'). everyTime('1s','A',function(){
//do something...
});

//Execute every 20 seconds, up to 5 times, and name the timer The device name is B
$('body').everyTime('2das','B',function(){
//do something...
},5);

//Execute every 20 seconds, unlimited times, and name the timer as C
//If the time interval is reached, but the function program has not been completed, you need to wait for the execution function to complete before continuing to time
$('body').everyTime('2das','C',function(){
//Execute a program that will take more than 20 seconds
},0,true);

/***************************************************** *******
* oneTime(time interval, [timer name], called function)
******************** ****************************************/
//Execute after 10 seconds of countdown
$('body').oneTime('1das',function(){
//do something...
});

//Execute after 100 seconds of countdown, and name the timer D
$('body').oneTime('1hs','D',function() {
//do something...
});

/***************************************************** ********
* stopTime ([timer name], [function name])
************************ ****************************************/
//Stop all timers on $('body')
$('body').stopTime ();

//Stop the timer named A on $('body')
$('body').stopTime ('A' );

//Stop all timers calling test() on $('body')
$('body').stopTime (test);

Custom time unit
Open the source code
Find
Copy the code The code is as follows:

powers: {
// Yeah this is major overkill...
'ms': 1,
'cs': 10,
'ds': 100,
's ': 1000,
'das': 10000,
'hs': 100000,
'ks': 1000000
}

You can customize what you want !
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート