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?
}

我很新鲜。我以前没有见过这种语法。我的猜测是点击事件,在任何包含“解雇”且值为“模态”的属性上?

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').

当您仅将“单击”绑定到两个处理程序时,上述所有操作都是不可能的。

关于命名空间事件的 jQuery 文档

于 2012-04-04T19:39:28.343 回答
0

要添加到 Vega 的答案:

调用on()(自 jQuery 1.7 起可用)或delegate()使用事件click.dismiss.modal意味着注册一个单击处理程序,该处理程序在触发事件中传递dismiss或命名空间时触发,或者在没有命名空间的情况下调用。modalclick

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

注意trigger(),unbind()off()只接受一个命名空间。

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

您还可以取消绑定 using .dismisswhich 将删除具有该名称空间的所有事件(不仅仅是click)。触发本身不适用于命名空间;点之前必须有一个事件名称。

于 2012-05-22T16:57:03.607 回答