2012-02-07 2 views
7

ブートストラップのJSプラグインで、すなわち、ブートストラップ・typeahead.js.Iが要素が選択されている方法を把握することはできません。

$('body').on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) 

私は要素が実際にデータ提供の部分で選択されています知っているが、ときに私jquery.jsを見て、私はそれがどのように行われるか分かりません。私はevent.add()部分に行きました。私はもっと混乱しました。誰でも教えてくださいどうしたのですか

私は知っている何かそれはありますが、知りたくてどのように。どのような要素が選択されていますか? 私はここにもっとアイデアが必要です。

答えて

2

on()方法の最初の引数は、この場合、それは名前空間され、イベントである - イベントがtypeahead.data-api名前空間内focus

である二番目の引数は、イベント委任目的のためにフィルタセレクタです。実際のイベントハンドラはbody要素に添付されていますが、私としては(なぜへの回答を検索する場合は、ハンドラ関数はのみtypeahead

+0

回答ありがとうございます。私は主なアイデアを理解しています。しかし、データ提供属性によって要素が実際どのように選択されているのか分かりません。jqueryソースコードを読むのに問題があります。$ .event.add:function (elem、types、handler、data、selector)、ここで迷子になりました。もう少し説明が必要です。 – Gnijuohz

+1

おそらく、間違っているところです。要素は 'data-provide'属性で選択されていません。この例で選択された要素は 'body'です。 'body'要素に到達する指定された名前空間の下のイベントは、' data-provide'属性を持っているかどうかを調べ、もし値が 'typeahead'ならばそれを調べます。そうであれば、ハンドラが実行されます。 'on'のソースコードを見てみてください... – danwellman

+0

実際にevent.addを呼び出すので、そこに行ったのです。私はソースをもう一度見ます。もう一度ありがとう! – Gnijuohz

2

の値を持つdata-provide属性を持つ要素から送られてくるイベントのために実行されますなぜ誰かが、そのような厄介なフォーカスイベントハンドラを登録しますでした。)それはdata-provide="typeahead"属性でdocumentation HERE:

<input type="text" data-provide="typeahead"> 

ノードに記載されているように、その理由がtypeaheadsとして活性化され、先行入力制御の純粋なHTMLベースの初期化ですドキュメントがフォーカスを受け取ると...

関連する問題