Notes開発者のためのXPagesデザインレシピ

簡単でCoolなXPagesアプリケーションを作るための情報を発信していきます

コーディング

XPages with jQuery なぜID指定でjQuery!が動かないのか? Part1

image

XPageのID指定は難しい???

今回はXPageでjQueryを使う場合にはまりやすいポイントを解説します。jQueryを個別の要素(フィールドや個別のタグ)を指定するにはIDタグを使用します。例えばテキストフィールドの文字色を変えたい場合にはこんな感じになります。

$("#Subject").css("color","pink");

さて、XPageのID指定ってどこでしょう?XPageでは「名前」がIDとして指定されます。

image

このコントロールの「名前」はすべてのプロパティ-IDに反映されます。(「名前」項目はこのidをわかりやすく表示しているだけなので、どちらから変更しても同じです)

image

今動かなきゃ何にもならないんだ!!!

では、先ほどのjQueryのソースをボタンのクリックイベントに書き込んで、実行してみましょう!

view2

全く動きません!Why?

ブラウザの開発者ツールを使ってフィールドのIDを調べてみましょう。idであるSubjectの前に変な文字が付加されて”view:_id1:Subject”となっています。

image

じゃぁ、このidを指定すればいいんじゃね?ということで下記のように書き換えて実行してみます。

$("#view:_id1:Subject").css("color","pink");

view3

動きません!なんでやねん!

XPageとjQueryのシンクロ率を下げているもの

ここでポイントとなるのはid名”view:_id1:Subject”の中に入っているコロン”:”です。このコロンがCSSの疑似クラスで使われている区切り記号と判断され、正常に要素を選択することができなくなってしまっています。

【CSSの疑似クラス例】
要素名:hover     マウスカーソルが乗っている要素
要素名:first-child     要素名に一致する最初の子要素

これを回避するにはコロンの前にバックスラッシュ(\マーク)を二つ重ねてエスケープします。

$("#view\\:_id1\\:Subject").css("color","pink");

動くようになりました。

view3[5]

次回予告

次回「XPages with jQuery なぜID指定でjQuery!が動かないのか? Part2」ではXPagesの標準的なID指定と書かれている{id:要素名}を使った場合の方法を書いていきます。

 

【参考リンク】
jQuery API Documentation 日本語訳 - ID Selector(“#id”)
http://s3pw.com/jQ-JPN/id-selector/
jQuery FAQ - How do I select an element by an ID that has characters used in CSS notation?
http://learn.jquery.com/using-jquery-core/faq/how-do-i-select-an-element-by-an-id-that-has-characters-used-in-css-notation/