そーや結構前からjsdo.itで公開していますjQuery pluginについてでも記事を書こうかと思います。
そのpluginの名は.texts()
です。そのpluginは下記の機能を持ちます。
- 要素群より文字のみ抽出し、且つ指定の正規表現により1文字に分け、任意のタグで囲った物を取得する
このpluginの利点は下記にあります。
- 要素ではなく、テキストノードのみ抽出して操作することによりタグの書き換えが発生せず、イベントが消失しないこと。
ダウンロードはこちら
この要素は名の通り、任意の要素群からテキストノードのみ取得し、1文字ずつに分け、取得することが出来るという物です。
文字解析の正規表現が/([\uD800-\uDBFF][\uDC00-\uDFFF]|[^\B\t\s ])/g
になっているのは[\uD800-\uDBFF][\uDC00-\uDFFF]
でサロゲートペア文字を切り出し、且つ、[^\B\t\s ]
で、特定文字種以外の文字を1文字単位で切り出しています。
関数としての動作については下記の様になります。
- $(selecter).texts(options);
要素群よりテキストノードを取得する。
- options.class
一時クラス名
(オプション 初期値:
"char"
)
- options.tagName
生成タグ名
(オプション 初期値:
"span"
)
- options.reg
正規表現オブジェクト
(オプション 初期値:
/([\uD800-\uDBFF][\uDC00-\uDFFF]|[^\B\t\s ])/g
)
以上。
追伸:サンプルなら、うちのcodeを見るとそこたら中で使っていますが、単に jQuery objectで.texts()
するだけです。
0 件のコメント:
コメントを投稿