今回調べたjQuery Mobileのヘッダに関する覚え書き。ヘッダ(data-role=”header”内)に’a要素’を記述すると自動的にボタンが生成される。リンクが1つのときはヘッダの左端にボタンが、2つ目のリンクに対しては右端にボタンが配置される。
- 戻るボタンを実装する
<!-- HTML --> <div data-role="header"> <h1>header title</h1> <a href="" data-rel="back">Back</a> <!-- hrefの内容は無視される --> </div>
‘data-rel=”back”‘を指定すると、hrefの内容に関わらず「戻る」ボタンが生成される。ラベルを省略すると’Back’が表示される。
<div data-role="header"> <h1>header title</h1> <a href="#home" data-icon="home">Home</a> <!-- '#home'は遷移先のID(やURL) --> <!-- data-icon="hoge" でアイコンを指定する --> <!-- class="ui-btn-right" でアイコンを右端に表示する --> <!-- data-iconpos="notext" でアイコンだけのボタンにする --> </div>
アイコンの一覧は、ここなどで確認できる。
生成するボタンを全てのページで共通にしたい場合は、コードで対応する方法がある。具体的には、jQuery Mobileの「ページ」が生成されるタイミングで、ボタンを表示するHTMLを追加することで実現できる。ページ生成のタイミングは、jQuery Mobile の pagebeforecreateイベントを使って捕捉する。
// JavaScript $('div[data-role="page"]').live("pagebeforecreate", function(evt){ var headerButtons = '<a href=...></a>'; $(this).find('div[data-role="header"]').append(headerButtons); });
生成しようとしているページが特定のページ(例えば#pgPlanViewであるかは、以下のように調べられる。この方法で「トップページには戻るボタンを作成しない」などが実現できる。
// JavaScript if ($(this).attr('id') == 'pgPlanView') { // ... }