Используя jQuery, следующие идентичные в действительности:
$('a').click(function(){ doSomething(); });
$('a').on('click', function(){ doSomething(); });
С input
событием в браузерах, которые я тестировал, работает только второй шаблон.
Таким образом, вы ожидаете, что это сработает, но это НЕ (по крайней мере, в настоящее время):
$(':text').input(function(){ doSomething(); });
Опять же, если вы хотите использовать делегирование событий (например, чтобы настроить событие на #container
прежде, чем ваш input.text
будет добавлен в DOM), это должно прийти на ум:
$('#container').on('input', ':text', function(){ doSomething(); });
К сожалению, опять же, это не работает в настоящее время!
Работает только этот шаблон:
$(':text').on('input', function(){ doSomething(); });
ИЗДАНО БОЛЬШЕ СОВРЕМЕННОЙ ИНФОРМАЦИИ
Я, конечно, могу подтвердить, что этот шаблон:
$('#container').on('input', ':text', function(){ doSomething(); });
СЕЙЧАС работает и во всех «стандартных» браузерах.