【问题标题】:bootstrap modal delegate eventype syntax引导模式委托事件类型语法
【发布时间】:2012-04-04 19:33:36
【问题描述】:
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”的属性上???

【问题讨论】:

    标签: javascript jquery events modal-dialog twitter-bootstrap


    【解决方案1】:

    我想,你看到的是Namespaced Events。当您对同一事件有多个事件处理程序时,这将被广泛使用。请参阅下面的示例,

    DEMO

    $('#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 docs on Namespaced Events

    【讨论】:

    • 所以在.on('click.a' 中,.a 部分是您可以编造的名称,正确吗? 它不涉及框架中的任何内容,而只是一种唯一命名您的处理程序的方法,以便您稍后可以在触发/关闭/等中引用它。 ?
    • @AaronLS 是的,这是正确的。你可以阅读它api.jquery.com/on/#event-names
    【解决方案2】:

    补充维加的答案:

    使用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)。触发本身不适用于命名空间;点之前必须有一个事件名称。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-20
      • 1970-01-01
      • 1970-01-01
      • 2011-03-07
      • 2016-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多