2
var Modal = function (content, options) {
   this.options = options
   this.$element = $(content)
   .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this))
                                          ^^^^^^^^^^^^^^^^^^^^
                                        What does this mean?
}

私はかなり新鮮です。この種の構文は前に見たことがありません。私の推測では、「dismiss」を含み、「modal」の値を持つ任意の属性でのクリック イベントです。

4

2 に答える 2

5

私が思うに、あなたが見ているのはNamespaced Eventsです。これは、同じイベントに対して複数のイベントハンドラーがある場合に広く使用されます。以下の例を参照してください。

デモ

$('#test').on('click.a', function () {
    alert('A is clicked');
});

$('#test').on('click.b', function () {
    alert('B is clicked');
});

$('#unbindA').on('click', function () {
    $('#test').off('click.a');
});

上記の例では、これは単なるデモンストレーションunbindですが、のような特定のハンドラーをトリガーするためにも使用できます$('#test').trigger('click.a')

'click'を両方のハンドラーにバインドするだけでは、上記のすべては不可能です。

名前空間イベントに関するjQueryドキュメント

于 2012-04-04T19:39:28.343 に答える
0

ベガの答えに追加するには:

呼び出しon()(jQuery 1.7以降で使用可能)またはdelegate()イベントを使用するということは、トリガーされたイベントでまたは名前空間が渡されたとき、または名前空間なしで呼び出されclick.dismiss.modalたときに発生するクリックハンドラーを登録することを意味します。dismissmodalclick

modal下に「ネスト」されていませんがdismiss(構文は誤解を招く可能性があります)、に直接「接続」されているものとして扱われclickます。つまり、click.dismiss.modalと同等click.modal.dismissです。

例:

$('#elem').on('click.dismiss.modal', function () {});
$('#elem').trigger('click.dismiss');  // handler is called
$('#elem').trigger('click.modal');  // handler is called
$('#elem').trigger('click');  // handler is called
$('#elem').trigger('click.abc');  // handler is NOT called

、、およびは1つの名前空間のみを受け入れることtrigger()に注意してください。unbind()off()

$('#elem').off('click.dismiss');  // now the handler is just 'click.modal'

を使用してバインドを解除することもできます。.dismissこれにより、(だけでなく)その名前空間を持つすべてのイベントが削除されますclick。トリガーは、名前空間自体では機能しません。ドットの前にイベント名が必要です。

于 2012-05-22T16:57:03.607 に答える