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?
}
我很新鲜。我之前没有见过这种语法。我的猜测是click事件,对任何包含'dismiss'并且值为'modal'???
的属性答案 0 :(得分: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”绑定到两个处理程序,就无法实现上述所有功能。
答案 1 :(得分:0)
添加到Vega的答案:
使用事件on()
调用delegate()
(自jQuery 1.7起可用)或click.dismiss.modal
调用意味着注册在dismiss
或{{1}时触发的单击处理程序在触发事件中传递命名空间,或者在没有命名空间的情况下调用modal
。
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
)。触发器本身不适用于命名空间;点之前必须有一个事件名称。