2012-06-10 1 views
3

Я унаследовал приложение, которое использует jQuery 1.7.2.В jQuery 1.7.2 в чем разница между («щелчком») и «on» («click.randomText»)?

На протяжении приложения мы имеем код, как ниже:

$('#quotation').off("click").on("click", function(){ 
    // do something here... 
} 

Теперь я понимаю, выше всяких проблем. Тем не менее, раздавался в нашем коде я встречаю что-то вроде этого:

$('#continue').off("click.products").on("click.products", function(){ 
    // do something here... 
} 

На протяжении приложения я нахожу click.products или click.orders. Кажется, что когда-либо после . может быть полностью случайным текстом.

В чем разница между click и click.products?

ответ

4

Этот код использует пользовательское пространство имен, определенное ими самостоятельно или плагином.

Название события может быть присвоено пространством имен событий, которое упрощает удаление или запуск события. Например, «click.myPlugin.simple» определяет как myPlugin, так и простые пространства имен для этого конкретного события click. Обработчик события щелчка, прикрепленный через эту строку, можно удалить с помощью .off («click.myPlugin») или .off («click.simple»), не нарушая других обработчиков кликов, прикрепленных к элементам. Пространства имен аналогичны классам CSS, поскольку они не являются иерархическими; требуется только одно имя. Пространства имен, начинающиеся с символа подчеркивания, зарезервированы для использования jQuery.

on docs

Live DEMO:

$('#a').on('click.bar', function() { 
    console.log('bar'); 
}); 

$('#a').on('click.foo', function() { 
    console.log('foo'); 
}); 


$('#b').click(function() { 
    $('#a').trigger('click.foo'); 
});​ 

Теперь при нажатии на #a оба щелчки обработчиков (Foo и бар) поднимет,
Но при нажатии на #b только Foo поднимет ,

+0

Итак, нажмите здесь больше не на событие click? – Jason

+0

Если 'click.xxx' больше не является событием' click', как эта функция внутри по-прежнему выполняется при нажатии элемента управления? Он все равно должен ссылаться на событие 'click' каким-то образом? – Jason

+0

+1 для указания документации. Мне никогда не приходило в голову проверять документы, как я полагал, предыдущие разработчики сделали что-то обычное, не связанное с 'on()'. Кажется, я понял это сейчас. Большое спасибо за ваш быстрый ответ. (Пробовал до +1, но пока не может, только у 15 репа, извините, вернется за ним, хотя 15 достигнуто :)) – Jason