Всем добрый вечер. У нас есть 3 файла. 1 - Forms.js c обработчиками нажатий клавиш формы menu.php, 2 - форма menu.php, 3 - index.php.
В index.php есть кнопка при нажатии, которой загружается форма menu.php, загрузка происходит с помощью .ajax. Для того чтобы обработчики нажатий на кнопки работали в форме menu.php я в конец html кода писал "", но когда я открываю форму, то из-за загрузки Forms.js вывод формы затормаживалась на 1 секунду. Тогда я решил загрузить скрипт Forms.js после вывода этой формы и для этого я использовал метод success у .ajax чтобы после загрузки и появлении формы загрузить Forms.js, но проблема в том, что я не знаю как его загрузить. Как мне эту проблему решить?
Денис Машанов: я опять ничего не понял, наверно я просто туп. но впечатление такое, что вы там костылями какими-то занимаетесь. скрипт с обработчиками подключайте сразу на страницу, не нужно ничего отдельно скачивать, только в таком случае нужно делегирование сделать через $().on(). при нажатии на кнопку, ajax'ом грузите разметку с формой и вставляете её в нужное место. всё. из-за делегирования форма будет реагировать на нажатия клавиш.
Stalker_RED: По моему эта ошибка у меня из-за недопонимания работы js. У нас обработчики вешаются на элемент html. То есть сначала в dom должна произойти загрузка html элемента, а только потом вешается обработчик(загрузка файла js)?
То есть сначала в dom должна произойти загрузка html элемента, а только потом вешается обработчик
да
обработчики вешаются на существующие элементы. если вы вешаете $('.super-block').click() - то этот обработчик не повесится если .super-block не существует в dom, более того этот обработчик не повесится даже после того как .super-block будет вставлен в dom, например через ajax, в этом случае нужно либо заного инициалировать обработчик после вставки .super-block в dom, либо использовать делегирование событий.
если вам нужно загрузить файл скрипта из javascript, то можно сделать как-то так(если я правильно понял что вам нужно):
Alex: Урл всё правильно да и код рабочий, ошибка была на стороне загружаемого js. Надо было получение самих элементов формы со стороны загружаемого js обернуть в $(document).ready(function (){})