Когда вы используете bind()
, он сразу присоединяет обработчик к набору элементов, возвращаемых селектором.
Таким образом, в документе готов, $(":submit")
вернет ноль элементов, потому что в элементе нетDOM, относящиеся к типу отправки (см. http://api.jquery.com/submit-selector/).. В этот момент ваш обработчик не привязывается ни к чему. Позже, когда вы нажимаете ссылку и добавляете кнопку отправки формы и дочернего элемента, он по-прежнему имеетк нему прикреплен обработчик событий по умолчанию.
Чтобы получить желаемое поведение, у вас есть две опции.
Один из них - прикрепить обработчик к кнопке отправки в обработчике $('a').click()
,вместо оценки селектора во время document.ready
.
Другой, как предполагает karim79, использует .live()
(см. http://api.jquery.com/live/) или .delegate()
(см. http://api.jquery.com/delegate/) для ленивого связывания).к элементу, который еще может не существовать.