1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

イベントハンドラーの活用例

Last updated at Posted at 2019-01-27

まえおき

今更なのですが、jQuery大好きなので、jQuery Advent Calendar 2013に参加したく、記事を書きました。ここ数年の間に便利なjavascriptフレームワークもたくさん出てきてjQueryは影が薄くなっているようですが、数多くの使い勝手の良いCSSフレームワークやCMSにはがっちり組み込まれているので、まだまだ必要な技術なんだなと思います。
今もBootstrap4を使ったコンテンツの開発をしているので、相変わらずjQueryは触り続けています。
今回は過去実装したイベントハンドラを使った小技(?)を書かせていただければと思っております。

背景

画像表示をする際に画像が全て揃っているかどうかわからない環境で画像がない時にはデフォルトの画像を表示したいときに実装した方法です。

サンプル

See the Pen error sample by tomo (@tomoka) on CodePen.

説明

errorEvent

今回の処理にerrorEventを使いました。
errorEventが発火する状態には色々な状態があります。その中で、画像がない時に404エラーが帰ってきます。

参考:HTMLImageElement
https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement#Errors

よって画像がない時は"Null"が帰ってきて自動的にエラーを取得できるので、404エラーが起こった時のみ、画像を差し替えるように設定しました。

実装方法

実装方法はイベントハンドラーであれば自動的に帰ってくるのでjQueryのon()に実装できます。

参考:.on()
http://api.jquery.com/on/

$(".itemPhoto").on("error",function(){
  console.log("画像がありません");
})

404エラーを出すsrcを持つimgにイベントを付けます。
もちろん、通常のイベントなので、同じように設定できます。
書き方は、いつもと一緒。

あとがき

まだまだjQuery書いてます。

イベントつながりで、最近、とても便利そうなjQuery Pluginを見つけました。
https://hammerjs.github.io/
APIに無いイベントの取得で過去にiOSとAndroidの検知の違いで苦労したことがあるため、Swipeを使いやすい形で実装できることに感動しました。(3本指のスワイプジェスチャー(MozSwipeGesture)ではなく1本指のSwipeに対応。)

書き方もこんな感じ。
http://hammerjs.github.io/getting-started/

var hammertime = new Hammer(myElement, myOptions);
hammertime.on('pan', function(ev) {
	console.log(ev);
});

使えるようになるイベントも豊富。
http://hammerjs.github.io/touch-action/

まだまだ、見つけたばかりで、documentの読み込みもできていなし理解もしていないので、実装予定があるので、実装してみたら報告したいと思います。
最後まで読んでいただきありがとうございました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?