В старые времена я с большим успехом использовал цепочку вызовов live(), например:
$(".something")
.live("click", function(e) { ... })
.live("change", function(e) { ... })
.live("submit", function(e) { ... });
В эти дни live(), bind() и delegate() были заменены блестящим новым on().
Я попробовал просто заменить live() на on(), что казалось бы очевидным:
$(".something")
.on("click", function(e) { ... })
.on("change", function(e) { ... })
.on("submit", function(e) { ... });
Однако почти так же очевидно, что это не сработает, если вы рассмотрите, как работает on(). Это из http://api.jquery.com/on/:
"Обработчики событий привязаны только к текущим выбранным элементам, они должны существовать на странице в момент, когда ваш код выполняет вызов .on()."
В соответствии с документами jQuery мне нужно привязать к document и делегировать на .something для обработки прямых событий. К сожалению, это означает, что я в конечном итоге повторяю свой селектор делегатов (.document), если я хочу реплицировать то, что у меня выше, с помощью on():
$(document)
.on("click", ".something", function(e) { ... })
.on("change", ".something", function(e) { ... })
.on("submit", ".something", function(e) { ... });
Это работает так, как ожидалось, но мне очень хотелось бы иметь возможность цепочки более четко, как я, используя live(). Я что-то пропустил?