Postal Search APIs & Solutions
Postal Search APIs & Solutions
  • チュートリアル
  • ダイジェスト
  • リファレンス
  • デモ
  • テスト
  • 構築キット
  • with Gadgets
  • with jQuery
  • with Microformats
  • よくある質問
  • お問い合わせ
  • 利用規約
  • フォーラム
  • ブログ
Design by
Studio7designs
opensourcetemplates.org
ホーム > Postal Search Ajax API with jQuery > Events

指定した処理をキューに追加して後でまとめて実行する jQuery Delay プラグイン

メソッドチェーンの中で、指定した関数をその場で実行せず、遅延して後回しにできる jQuery プラグインです。jQuery の操作を後でまとめて実行したり、一定の間隔でステップ実行できるので、その特性を活かした様々な応用が期待できます。

後回しにする関数は delay メソッドで指定します。このとき、指定した関数はキューに追加するだけで、その関数は実行しません。delay メソッドで繰り返し関数を指定して、後回しにする関数をどんどん追加していきます。

後回しにする関数は $.resume メソッドで実行します。$.resume メソッドの引数には実行間隔が指定でき、その実行間隔の周期で、キューの中の関数を先頭から1つずつ順番に実行します。実行間隔はミリ秒の単位で指定します。省略したときは 10 ミリ秒です。なお、$.resume メソッドを実行し直すと、現在の実行周期を変更できます。

キューの中の関数がある限り、その関数を実行し続けようとします。ですので、キューの中に関数があるとき、delay メソッドで関数を追加すると、その関数も実行します。ただし、キューの中の関数がなくなると停止となり、delay メソッドで関数を実行しても、その関数は実行しません。そのときは $.resume メソッドを呼び出して再開してください。

ダウンロード

jquery.delay.js (Uncompressed only)

(function($) {
  
  // $.delay
  $.delay = {

    // $.delay.queue
    queue: [],
    
    // $.delay.timer
    timer: null,

    // $.delay.pause
    pause: function() {
      if (!$.delay.timer)
        return;
      clearInterval($.delay.timer);
      $.delay.timer = null;
    }
  };

  // $.resume
  $.resume = function(interval) {
    $.delay.pause();
    $.delay.timer = setInterval(function() {
      var fn = $.delay.queue.shift();
      fn ? fn() : $.delay.pause();
    }, interval || 10);
  };

  // delay
  $.fn.delay = function(fn) {
    var self = this;
    $.delay.queue.push(function() {
      self.each(fn);
    });
    return self;
  };

})(jQuery); // function($)

デモ

次のデモは、テキストを入力して実行ボタンをクリックすると、入力したテキストをタイプライタ風に再現するものです。

<form onsubmit="run(this.q.value); return false;">
<input type="text" name="q" value="jQuery Delay プラグイン" />
<input type="submit" name="g" value="実行" />
</form>
<p id="r"></p>

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery.delay.js"></script>
<script type="text/javascript">
//<![CDATA[
function run(q) {
  $.each(q.split(''), function(i, v) {
    $('<span />')
      .text(v)
      .delay(function() {
        $('#r').append(this);
      });
  });
  $.resume(200);
} 
//]]>
</script>

入力したテキストを1文字ずつに分割して、$.each メソッドで1文字ずつ繰り返しています。その繰り返しの中で、1文字の span タグを組み立てて、その span タグを p タグの末尾に追加しています。このとき、delay メソッドを使って span タグの追加を後回しにしています。

最後に $.resume メソッドを使って、後回しにした関数を200ミリ秒の周期で実行しています。200ミリ秒ごとに p タグに span タグが追加されることになり、入力したテキストを1文字ずつタイプライタで入力したかのように見えます。

このサンプルを検索ボックスに適用すれば、テレビ CM でよく見かける「○○で検索!」のような動きのある効果にも応用できそうですね。

jQuery Delay プラグインは jQuery の振る舞いを理解する目的で作成したものですが、特定の場面でニーズがあるかもしれませんので公開します。ライセンスは jQuery と同じにしておきます。

関連情報

  • 郵便番号から住所を検索する #1
  • 郵便番号から住所を検索する #2
  • 送信フォームの入力形式を郵便番号に制限する
  • 住所の単語から郵便番号を検索する
  • 住所の単語から郵便番号を検索してその住所を表示する
  • 住所の単語から住所の候補をサジェスト表示する #1
  • 住所の単語から住所の候補をサジェスト表示する #2
  • 住所の単語から住所の候補をサジェスト表示する #3
  • 郵便番号から住所を検索する jQuery lookup プラグイン
  • 住所の単語から郵便番号を検索する jQuery coder プラグイン
  • 指定した処理の実行を後回しにする jQuery later プラグイン
fixedUI プラグイン
  • 画面の下からフィードバックフォームをスライド表示して固定する
jTemplates
  • jTemplates を使ってテンプレートから HTML の貼り付けコードを作成する
Cycle Plugin
  • cycle プラグインとフォートラベル API で旅行写真をシャッフル表示する
Flash Plugin
  • Flash Plugin を使って Youtube の動画を再生する
tablesorter
  • 指定した条件でテーブルの行を並び替える
  • 選択ボックスで指定した列でテーブルの行を並び替える
  • HTML 要素を含む列でテーブルの行を並び替える
  • 並び替えできるテーブルであることをリンクで伝える方法
  • 現在の位置をページ単位でなく行単位で表示する方法
Interface Elements
  • Interface Elements の Carousel とフォートラベル API で旅行写真の 3D ギャラリーを作る
  • Interface Elements の Imagebox とフォートラベル API で旅行写真のギャラリーを作る
  • Interface Elements の Slider で郵便番号を入力してみたが・・・
  • Interface Elements の Slider で旅行写真を拡大(または縮小)表示する
  • Interface Elements の Tooltips をいろいろな要素で使ってみた
  • Interface Elements の Scrollto でページ内リンクをスムースにする
  • Interface Elements の Carousel と YouTube Data API で動画のサムネイルを回転表示する
Selectors
  • セレクタでカンマを使って異なる要素の OR をとる
  • Web ブラウザに依存したコードを書き分ける jQuery Browser Selector プラグイン #1
  • Web ブラウザに依存したコードを書き分ける jQuery Browser Selector プラグイン #2
Events
  • 指定した処理をキューに追加して後でまとめて実行する jQuery Delay プラグイン
DOM Manipulation
  • ページから自ページのリンクを削除してユーザビリティを改善する
  • メソッドチェーンを途切ることなく HTML タグを組み立てる jQuery Tag プラグイン
  • 指定した URL からそのサイトのファビコンを表示する jQuery Favicon プラグイン
AJAX
  • コールバックのイベントハンドリングを容易にする jQuery JSONP プラグイン
Forms with Functions
  • 入力ボックスに郵便番号のマスクを適用する #1
  • 入力ボックスに郵便番号のマスクを適用する #2
  • 検索ボックスでカチカチとキーワード入力を再生する jQuery oogo プラグイン
Using with Other Libraries
  • jQuery のグローバルオブジェクトとオブジェクト書き換えの範囲
  • Prototype $$ メソッドを jQuery Selector で置き換えてみる
Books
  • Learning jQuery: Better Interaction Design and Web Development with Simple Javascript Techniques
  • jQuery Reference Guide: A Comprehensive Exploration of the Popular JavaScript Library
  • jQuery in Action
  • jQuery で作る Ajax アプリケーション
  • 実践! Ajax フレームワーク jQuery
Learning jQuery: Better Interaction Design and Web Development with Simple Javascript Techniques jQuery Reference Guide: A Comprehensive Exploration of the Popular JavaScript Library jQuery in Action jQueryで作る Ajaxアプリケーション 実践!Ajaxフレームワーク jQuery
Resources
  • jQuery のロゴやボタンがいろいろあります
Copyright© 2007 LEARNING RESOURCE LAB and the Postal Search APIs & Solutions team.