Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > Скрипт не действует на новые элементы


Автор: alexesuser 24.8.2021, 08:16
Добрый день.
Проблема следующая. На форме есть элементы с классом "date", по которому срабатывает скрипт datepicker.
Добавил кнопку для добавления аналогичных полей. Но в добавленных полях календарь не срабатывает. С чем может быть связано?

Автор: Oldshelf 24.8.2021, 17:28
Либо на элементах с классом "date" установлен onclick, вызывающий datepicker, либо есть скрипт, расположенный после формы, который перебирает все элементы и, при нахождении класса, ставит на них обработчики.

Автор: _zorn_ 28.8.2021, 16:28
Скрипт срабатывает (навешивает события) на момент вызова. Наверное какой нибудь jQuery типа $.datetime('MY-SELECTOR')
Так вот он отработает на момет когда элементы существуют. На новые элементы конечно ничего не навесит. 
У jQuery есть прикольный метод delegate, который решает данную проблему. 
На чистом JS пока не знаю хорошую альтернативу. Хотя используя например vue такое и не понадобится )

Автор: Rockie 10.12.2022, 22:28
Цитата(_zorn_ @  28.8.2021,  16:28 Найти цитируемый пост)
У jQuery есть прикольный метод delegate, который решает данную проблему. 

да, для jQuery сработает что-то такое:

Код

$('body').on('click', 'a.myclass', function() {
    // do something
});

https://stackoverflow.com/questions/1359018/how-do-i-attach-events-to-dynamic-html-elements-with-jquery

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)