5

jquery ツールを少し使って、 Twitter のブートストラップ srcをブラウジングし始めました。

私が気づいたことの 1 つは、$.Eventイベントをトリガーするためのコンストラクターの使用です。

多くの場合 (ブートストラップ モーダルなど)、次のようにトリガーされるイベントが見つかります。

var e = $.Event('show');

this.$element.trigger(e);

これが直接呼び出すよりも優れている理由については、私にはわかりません。

this.$element.trigger('show');

そのため、jQuery Event コンストラクターを使用する利点を知りたいと思っています。イベントに任意のプロパティをアタッチできるドキュメントを読みましたが、それは私にとって完全に理にかなっています。ただし、イベントにプロパティをまったく追加していない場合、コンストラクターを使用する方が有利な理由がわかりません

$.Eventイベント文字列でトリガーを呼び出すよりもコンストラクターが有利である理由を誰かが説明してくれますか?

どうもありがとう

4

2 に答える 2

1

後でイベントにプロパティを追加する場合は、もう少し柔軟性があります。また、トリガーされた後のイベントの状態を知るのに役立ちます。たとえば、誰かがstopPropagation()またはを呼び出した場合などpreventDefault()です。

それ以外は、jQueryは単にイベントタイプ()を取得し、それをオブジェクトstringにラップして正規化します。$.Eventこれが発生するjQueryの関連するソースコードは次のとおりです。

event = typeof event === "object" ?
     // jQuery.Event object
     event[ jQuery.expando ] ? event :
     // Object literal
     jQuery.extend( jQuery.Event(type), event ) :
     // Just the event type (string)
     jQuery.Event(type);
于 2012-08-28T01:26:14.897 に答える
0

ブートストラップ ソースを見た後、これを参照しているに違いないと思います。

var that = this
    , e = $.Event('show')

this.$element.trigger(e)

if (this.isShown || e.isDefaultPrevented()) return

e彼は、既定のアクションが で防止されたかどうかを後で確認できるように定義していますe.isDefaultPrevented()

于 2012-08-28T01:30:07.437 に答える