このページの本文へ

前へ 1 2 次へ

  • はてなブックマークに登録
  • del.icio.usに登録
  • livedoorクリップに登録
  • Buzzurlに登録
  • StumbleUponに登録
  • Google Bookmarksに登録
  • Facebookでシェア
  • Yahoo!ブックマークに登録
  • お気に入りに登録
  • 本文印刷

【短期集中連載】この冬作ろう!jQueryプラグイン講座 ― 第4回

3日目:単語に自動的にリンクを追加しよう

2009年01月03日 08時00分更新

文● 古籏一浩

この記事は「【短期集中連載】この冬作ろう! jQueryプラグイン講座」の第3日目です→[連載インデックス]へ


自動リンクプラグイン
単語にリンクを貼って分かりやすいサイトにするプラグインが今日のお題

 Webページに書かれている文章はバリエーションが多く、中には情報産業や医学用語など、専門的な言葉が含まれていることがあります。知っている人が読むのであれば専門用語など気にならないでしょう。しかし、そうでない人の場合には、ちょっとした用語が分からなかったりすると、いちいちWikipediaやGoogleなどを使って調べることになります。

 そんな時に、特定の単語に自動的にリンクを貼ってくれるようなプラグインがあれば便利です。たとえばテキスト中に「腸捻転」という単語があれば、「http://ja.wikipedia.org/wiki/腸捻転」にリンクする、といったイメージです。

 jQueryプラグイン講座3日目は、特定の単語に対して自動的にリンクを追加するプラグインを作成してみましょう。


リンクする単語とURLは配列に

 今回作成するプラグインの名前(メソッド名)は「addlink」としました。このプラグインを組み込むと、以下の単語に対して、指定されたWebページへのリンクが自動的に貼られるようにします。なお、リンク先はすべてWikipediaになっていますが、他のWebサイトでももちろん問題ありません。

単語リンク先
富士山http://ja.wikipedia.org/wiki/富士山
京都http://ja.wikipedia.org/wiki/京都市
秋葉原http://ja.wikipedia.org/wiki/秋葉原
築地市場http://ja.wikipedia.org/wiki/築地市場

 この自動リンク追加プラグインでは、これまでのように正規表現の「replace()」を列記するのではなく、あらかじめ配列に単語とリンク先のURLを入れておきます。こうしておけば、単語が増えても簡単に対応できます。

 単語は「dict」という名前の配列変数に入れておきます。偶数番目は単語、その次の奇数番目の要素がリンク先のURLです。あとは、「for()」を使って単語の数だけ置換処理を繰り返します。

 単語が多くなったときにリンクだらけになってしまうのを避けるため、今回はグローバルマッチ(文章全体)の置換処理はせず、最初に見つかったものだけをリンクにしています。もちろん、これまでと同様にgオプションを付加して全体を置換しても問題ありません。

 また、repace()の最初のパラメータは「/~/」でなく「new RegExp()」とします。変数などを使用する場合には、「RegExp()」の最初のパラメータに置換(検索)文字を指定し、2番目のパラメータで"g"や"i"などオプションパラメータを指定します。2番目のパラメータは今回省略していますので、グローバルマッチは行なわれず、最初に見つかった単語だけにリンクを追加します。

 作成したら「addlink.js」という名前でファイルを保存します。

【自動単語リンクプラグインのソース】


/* 自動単語リンクプラグイン for jQuery
2009.1 By KaZuhiro FuRuhata  */
$.fn.addlink = function(baseURL){
    var dict = ["富士山", "http://ja.wikipedia.org/wiki/富士山",
                "京都","http://ja.wikipedia.org/wiki/京都市",
                "秋葉原","http://ja.wikipedia.org/wiki/秋葉原",
                "築地市場","http://ja.wikipedia.org/wiki/築地市場" ];
    return this.each(function(){
        var srcText = this.innerHTML;
        for (var i=0; i<dict.length; i+=2){
            srcText = srcText.replace(new RegExp(dict[i]),"<a href='"+dict[i+1]+"'>"+dict[i]+"</a>");
        }
        this.innerHTML = srcText;
    });
}

前へ 1 2 次へ

この特集の記事

関連記事

はてブ注目ランキング
  1. スマートフォン対応サイトの作り方、教えます461 users
  2. Pythonが最高である3つの理由306 users
  3. HTML5 VideoでiPadがデジタルサイネージに!36 users
  4. Twitterでできること、ほかのツールが得意なこと30 users
  5. ヤフーとグーグルが提携、アルゴリズム検索技術にGoogleを採用20 users
  6. もう配色には困らない!「Adobe Kuler」1521 users
  7. 40分で覚える!jQuery速習講座1483 users
  8. 30分でできる!Webサイトを高速化する6大原則1295 users
  9. Web制作会社が作った!超使えるJavaScriptライブラリ1093 users
  10. 黒船Google汐留沖に出現でWeb広告業界に激震!995 users
最新記事

特設サイト

ASCII.jp会員サービス 週刊Web Professional登録

Webディレクター江口明日香が行く

お買い得・バーゲン品情報

Microsoft Office Professional Academic 2010

Microsoft Office Professional A…

マイクロソフト

2万3318円~

22%OFF!!

Microsoft Office Home and Business 2010

Microsoft Office Home and Busin…

マイクロソフト

2万8807円~

21%OFF!!

Microsoft Office Home and Business 2010 アップグレード優待

Microsoft Office Home and Busin…

マイクロソフト

1万9970円~

24%OFF!!

Microsoft Office Personal 2010 アップグレード優待

Microsoft Office Personal 2010 …

マイクロソフト

1万2670円~

24%OFF!!

Microsoft Office Personal 2010

Microsoft Office Personal 2010

マイクロソフト

2万4158円~

23%OFF!!

Microsoft Office PowerPoint 2010

Microsoft Office PowerPoint 2010

マイクロソフト

1万1519円~

26%OFF!!

VideoStudio Pro X3 特別優待版

VideoStudio Pro X3 特別優待版

COREL

5436円~

47%OFF!!

うしまん [デジタル写真集]

うしまん [デジタル写真集]

Predator Rat

2600円~

26%OFF!!

ノートン 360 バージョン 4.0

ノートン 360 バージョン 4.0

シマンテック

6770円~

34%OFF!!

Amazon.co.jp