引导模式委托偶数类型语法

bootstrap modal delegate eventype syntax

本文关键字:类型 语法 模式      更新时间:2023-09-26
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?
}

我很新鲜。我以前从未见过这种语法。我的猜测是点击事件,在任何包含"关闭"且值为"模态"的属性上???

我认为

,你所看到的是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 文档

补充

维加的答案:

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

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'

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