До версии jQuery 1,7 можно было использовать метод live(), который был очень удобен, позволяя добавлять обработчики событий к динамическому контенту, ну а с версии jQuery воспользоваться им уже не представляется возможным, вместо него следует использовать on().
Как было с использованием live():
1 2 3 4 |
$('#container a').live('click', function(event) { event.preventDefault(); console.log('item anchor clicked'); }); |
Собственно, проблема была такая, что в коде все live() заменили на on(), быстро проверили – вроде работает, но потом выяснилось, что использование такой конструкции:
1 2 3 4 |
$('#container a').on('click', function(event) { event.preventDefault(); console.log('item anchor clicked'); }); |
не приносит результата при работе с динамическими элементами (Google Chrome, 36.0.1985.125).
Поэтому для замены live() на on() и добавления обработчиков на динамические html эелементы следует использовать следующую запись:
1 2 3 4 |
$('#container').on('click', 'a', function(event) { event.preventDefault(); console.log('item anchor clicked'); }); |
И в качестве напоминания о том как использовать on() вместо bind().
1 2 3 4 |
$('#container a').bind('click', function(e) { e.preventDefault(); console.log('item anchor clicked'); }); |
Достаточно просто зменить:
1 2 3 4 |
$('#container a').on('click', function(e) { e.preventDefault(); console.log('item anchor clicked'); }); |
и вместо delegate()
1 2 3 4 |
$('#container').delegate('a', 'click', function(event) { event.preventDefault(); console.log('item anchor clicked'); }); |
тоже достаточно просто заменить:
1 2 3 4 |
$('#container').on('click', 'a', function(event) { event.preventDefault(); console.log('item anchor clicked'); }); |