Yahoo! UI Library3(YUI3)のコア機能(ノード・イベント)
Yahoo! UI Library Ver.3 を使ってみよう(2)
ダウンロード サンプルファイル (117.4 KB)
イベント(割り込み処理)
イベント処理はユーザーとの対話的な処理には必要なものです。また、現在のJavaScriptでの開発の主体となっています。
イベント処理を利用するには、イベント処理のモジュールを指定するのではなく、イベントが起こった後に行いたい処理のモジュールを設定してプログラムを作成します。イベント処理はどのモジュールにも含まれていると考えてよいでしょう。
イベント処理の書き方
イベント処理は、.on()で設定します。最初の引数で、どのようなイベントで起動するかの指定を行い、次にどのような処理をさせるかを指定します。以下構文です。
要素のインスタンス.on(イベント名,処理関数)
要素のインスタンスは前項で説明した、one()、all()を使用して取得します。リスト6をみてください。
<script type="text/javascript">
window.onload = function() {
YUI().use('node', function(Y) {
Y.one('#demo').on('click',function(e){ //(1)
alert('クリックされました!');
});
});
}
</script>
</head>
<body>
<div id="demo">クリックしてください!</div>
</body>
今回クリックイベントを使いました。Y.one('#demo')でインスタンスを取得して、on()で処理を記述しています。
.on()の処理関数function(e)の引数eはイベントが発生した要素を処理関数に渡します。
YUI3には、新しくY.on()の書き方が追加されています。リスト6を書き直してみました。
<script type="text/javascript">
window.onload = function() {
YUI().use('node', function(Y) {
Y.on('click',function(e){ //(1)
alert('クリックされました!');
},'#demo');
});
}
</script>
</head>
<body>
<div id="demo">クリックしてください!</div>
</body>
要素のインスタンスを取得して.on()を指定するのではなく、(1)のように、Y.on()の3番目の引数にセレクタを指定します。すっきりした形になったと思います。なお、要素のインスタンス.on()で3番目の引数を指定しても無視されるようです。
リスト4で使用したクリックイベント処理は、Y.on()の書き方で書いています。function(e)の引数eで要素のポインターを受け取り、 e.targetで要素を指定しています。
サポートされているイベントの種類
イベント処理が書けるようになりました。YUI3でサポートされているイベントにはどんなものがあるのでしょうか?
キーイベント処理には以下のイベント名が用意されています。
| イベント名 | 説明 |
| keyup | キーを離したとき |
| keydown | キーが押されたとき |
| keypress | 文字が入力されたとき |
マウス操作のイベントです。
| イベント名 | 説明 |
| click | クリックしたとき |
| dblclick | ダブルクリックしたとき |
| mousedown | 押し下げたとき |
| mouseup | マウスのクリックを止めたとき |
| mouseover | マウスを重ねたとき |
| mouseout | ターゲットから外れたとき |
| mousemove | マウスを動かしたとき |
上記以外のイベントです。
| イベント名 | 説明 |
| load | 読み込まれたとき |
イベント処理を使って楽しいページを作ることができそうです。
マウス処理の例題
マウスを動かして、画像を操作する例題を考えてみたいと思います。マウスを画像の上に持って行ったときと押し下げたときに、別の画像を表示させます。
図1の左の図が立ち上げたときの図です。マウスを画像の上におくと、中央の図になります。マウスを押し下げると、右の図を表示します。
リスト8は例題のリストです。
<script type="text/javascript">
window.onload = function() {
YUI().use('node', function(Y) {
Y.on('mouseout',function(e){ //(1)
e.target.set('src','./tora0001.png');
},'#img');
Y.on('mouseover',function(e){ //(2)
e.target.set('src','./tora0002.png');
},'#img');
Y.on('mousedown',function(e){ //(3)
e.target.set('src','./tora0003.png');
},'#img');
Y.on('mouseup',function(e){ //(4)
e.target.set('src','./tora0002.png');
},'#img');
});
}
</script>
</head>
<body>
<div><img id='img' src='./tora0001.png'></div>
</body>
(1)(2)(3)(4)それぞれのマウスイベントで画像を入れ替えています。マウスを押し下げたとき他のページへ飛ぶようにして、ボタンとして利用しても面白いのではないでしょうか。
まとめ
今回はコアの機能のうち、ノードとイベントについて説明しました。次回は標準モジュールについて説明したいと思います。
ノードとイベントのなかで、今回出てこなかったメソッドやプロパティもあります。開発に行き詰ったとき、YUI3のダウンロードページを開いて解説を読んでみると、良いヒントが見つかるかもしれません。
この記事は参考になりましたか?
既に会員の方はを行ってください。
- Yahoo! UI Library Ver.3 を使ってみよう連載記事一覧
- この記事の著者
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
WINGSプロジェクト 横塚 利津子(ヨコツカ リツコ)
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア

