2011-11-08 8 views
1

私は同じサイトで多くの異なる会社が働いているプロジェクトに取り組んでいます。JavaScriptを使用してjQueryイベントにバインドできますか?

主な開発者がイベントを設定しました。これをinitと呼ぶことにします。これは、ページにコードが実行される準備ができていることを示します。

彼らは基本的にはこのようにそれを呼び出している:私はここに行くことはありませんいくつかの理由のために

$(window).trigger('init'); 

、我々は可能な限り我々自身のコード内でのjQueryの使用を避けることを好みます。私はこのようにバインドしようとしました:

window.addEventListener('init', function (event) { 
    alert('hehehehe'); 
}); 

しかし、それは動作していないようです。しかし、これは完全に機能します:

$(window).bind('init', function (event) { 
    alert('hehehehe'); 
}); 

jQueryは、デフォルトではプレーンJSでバインドできない特別なイベントオブジェクトを使用しますか?私はちょっとばかげたことをしていますか?

答えて

3

docs for bindは答えが含まれているように見える:

任意の文字列はのeventTypeのために合法的です。文字列がネイティブDOMイベントの名前でない場合、ハンドラはカスタムイベントにバインドされます。これらのイベントはブラウザから呼び出されることはありませんが、.trigger()または.triggerHandler()を使用して他のJavaScriptコードから手動でトリガーされる可能性があります。

'init'と呼ばれるネイティブDOMイベントはありません:

http://en.wikipedia.org/wiki/DOM_events

したがって、「これらのイベントは、ブラウザによって呼び出されることはありません

が、.trigger()または.triggerHandlerを使用して他のJavaScriptコードから手動でトリガすることができます() "

+0

ああ、カスタムJavaScriptイベントに簡単にバインドすることはできません。 – Cera

+2

@Cerales:正しい。独自のpubsubシステムを実装し、他のすべての開発者がそれを使用するように説得する必要があります。そして、誰かがすでにそれらのために構築したもの、すなわちjQueryを使用するよりも優れていると確信してください。 ... – Domenic

+0

@Domenic - またはカスタムイベントシステムの使用をやめて、サードパーティのライブラリを必要とせずブラウザによってネイティブにサポートされる標準のDOMイベントシステムを使用するようにしてください。 – RobG

関連する問題