2012-04-04 5 views
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? 
} 

Я совершенно новый. Раньше я такого синтаксиса не видел. Мое предположение - событие щелчка, по любому атрибуту, который содержит «увольнение» и имеет значение «модальный» ???bootstrap modal delegate eventype синтаксис

ответ

5

думаю, что вы видите 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

+0

+1 для ссылки на jsfiddle – Kelvin

+0

Итак, в '.on ('click.a''' .a' часть - это имя, которое вы можете просто составить, ** правильно? ** Оно не относится к что-то в рамках, но это всего лишь способ однозначно назвать ваш обработчик, чтобы вы могли ссылаться на него позже в триггере/выключенном/etc.? – AaronLS

+0

@AaronLS Да, это правильно. Вы можете прочитать об этом http: //api.jquery .com/об/# EVENT-имена –

0

Чтобы добавить ответ Веги:

Calling on() (выпускается с JQuery 1.7) или delegate() с событием click.dismiss.modal означает зарегистрировать обработчик щелчка, который вызывается, когда dismiss или 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, который удалит все события с этим пространством имен (а не только click). Запуск не будет работать с пространством имен сам по себе; должно быть имя события перед точкой.