Представляю что отличие в том, что метод live назначает обработчик событий вновь появляющимся элементам.
При щелчке по div#uploadContainer происходит ничего не будет, видимо опечатка.
При щелчке на a.upload файл upload.html подгружается в div#uploadContainer затем там выполняется $('a.hiddenLink').live('click' и назначается(реально ещё не назначается) обработчик пока ещё скрытой ссылке.
При щелчке на a.uploadedLink cкрытая ссылка появляется и обработчик назначается(вот теперь точно назначается) скрытой ссылке. При нажатии на которую видим alert.
Теперь если нажать опять на ссылку a.upload произойдёт всё тоже самое, но уже при нажатии на скрытую ранее ссылку мы увидим alert дважды. - т.е. при удалении html метод live сохраняет его событие и когда он появляется вновь он добавляет его (а так помойму быть не должно).
Вот если бы ссылка hiddenLink - в подгружаемом коде не была скрыта изначально, то такой проблемы бы не наблюдалось.
По поводу опять же отличий live от bind - покажите мне где тут можно заменить Live на Bind без потери функционала, - если вообще вопрос конечно был к этому.
И в принципе если вынести js код из подгружаемого файла в index.html - то будет работать корректно, но этог сделать сложно - т.к. сайт полностью на ajax и не хотелось бы всегда подгружать все события на элементы, которые возможно и не загрузят. - хотя в общем то если нет решения проблемы, то прийдётся как то изворачиваться.
А теперь, судя по тону вашего ответа, - скажите мне где же я сильно затупил, потому как сам я пока этого не понимаю.
|