- 締切済み
jQueryMobileのbindメソッドについて
jQueryやjQueryMobileで、イベント定義時に、bindやliveメソッドを使うのは なぜでしょうか? 本などにはよく、『要素と関数を関連付けるため』と かかれていますが、いまいちbindやliveメソッドの役わり、メリットが分かりません。 たとえば以下のようなものでしたら、どちらでも(bindやliveメソッドを使わなくても)動いてくれます。 ----------bindメソッドあり! $(function(){ $('div').bind('tap', function(){ alert('tapのイベント発生です'); }) }); ----------bindメソッドなし! $(function(){ $('div').tap(function(){ alert('tapのイベント発生です'); }) }); ---------- このように、 bindメソッドをいれてもいれなくても、 実機でちゃんとアラート出て機能してしまいますw では、、bindやliveメソッドは、なんのためにあるのでしょう(汗) bindやliveメソッドを使わねばならないケース、拡張文などをおお教えいただけたら幸いです!! 宜しくお願いします!!
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- mtaka2
- ベストアンサー率73% (867/1179)
bindの場合、複数の種類のイベントに対しまとめてハンドラを設定することができます。 異なる種類のイベントにハンドラを設定する場合、 $('foo').bind('change blur', function(){…}); と $('foo').change(function(){…}).blur(function(){…}); とは同じ動作になりますが、bindの方が簡潔に書けます。 質問者さんの挙げた例のように一つにイベントだけにハンドラを設定する場合、bind('tap', …)と、tap(…)は、機能的にはまったく等価です。その場合は、tap などのイベント名を関する関数を使った方が簡潔に書けます。 live は、その関数を実行した後に追加された要素に対してもイベント登録が有効になる、という点でbindやtapなどとは機能がまったく異なります。 http://semooh.jp/jquery/api/events/live/type,+fn/
- kosukejlampnet
- ベストアンサー率44% (126/282)
お礼
KOUSUKEさま ありがとうございます!! 本家のURLですね* すいませんデザイナーなので英語もがんばります! ありがとうございました**
お礼
ありがとうございます!!ただの省略形だったみたいですね!!英数半角でつなげれば複数のイベントがかけるんですねすごいです! 調べましたら、、 click,mouseoverなどの正規のjQueryメソッドならbind()によるバインドは省略可なのですが、 jQueryに未対応なメソッド、例えばcontextmenu()メソッド(コンテキストメニューを出すメソッド)を検知したいばあいはbind()が必要だそうです。 ex) $(document).bind('contextmenu', function(e){}); jQueryに未対応なメソッド。。。だとしたらjQueryMobileなどは不安なので原則bind()メソッドを入れる癖付けておいた方がよいでしょうかw >http://semooh.jp/jquery/api/events/live/type,+fn/ 将来のことを考えたプログラムの際は使ってみます!!! すごくよくわかりました!!! ありがとうございました*