я читал, что события могут быть привязаны к элементу как
$('btn-submit').bind('click', function(){
// your custom code
});
и по-другому,
$(document).on('click', 'btn-submit', function(){
// your custom code
});
который является правильным и наиболее эффективным способом? Я использую рельсы 3.
Первый используется для привязки события, которое присутствует в DOM во время привязки, и называется Direct Binding, тогда как второе - это делегирование событий, когда элементы не присутствуют во время события привязки, но добавляются позже.
Прямые и делегированные события
Обработчики событий привязаны только к выбранным в данный момент элементам; они должны существовать на странице в момент, когда ваш код выполняет вызов.on(). Чтобы убедиться, что элементы присутствуют и могут быть выбраны, выполните привязку событий внутри обработчика документа для элементов, которые находятся в разметке HTML на странице. Если на страницу вводится новый HTML-код, выберите элементы и присоедините обработчики событий после того, как новый HTML будет помещен на страницу. Или используйте делегированные события для присоединения обработчика событий, как описано ниже.
Преимуществом делегированных событий является то, что они могут обрабатывать события из элементов-потомков, которые будут добавлены в документ позже. Выбирая элемент, который, как гарантируется, присутствует в момент присоединения делегированного обработчика событий, вы можете использовать делегированные события, чтобы избежать необходимости часто присоединять и удалять обработчики событий.
:)
.on
по-другому, а не как делегирование события. Я бы сказал, что этот вопрос скорее о том, когда использовать делегирование событий, а когда использовать прямую привязку событий.