- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

Что делать, если ваша email-рассылка попала в спам
10 распространенных причин и решений
Екатерина Ткаченко
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Есть форма на сайте и есть кнопка, которая с помощью JS добавляет input в форму, примерно так:
Надо, чтобы приопределенном событии оно обрабатывалось, например таким кодом
Для элементов,которые были созданы изначально - все хорошо, событие обрабатывается, но вот для тех элементов, которые были добавлены в форму - ничего не происходит. Почему и как исправить.
да потому что вы же сами написали такой код, который при загрузке документа добавляет всем input реакцию на mouseover. а когда вы добавляете новый input, он уже никак не может обработаться этой функцией. Вам просто надо для каждого нового input устанавливать это событие, тем более, id нового элемента известен.
Это известная богофича джейквери.
пользуйтесь jQuery(elmnt).find
или, как вариант, используйте дерево от корня
proksey-net, Спасибо, ваш совет помог, сделал так
Теперь все обрабатывается. Правда громоздкий код, но наверное, просто вынесу в отдельную функцию обработчик.
---------- Добавлено 08.05.2015 в 12:41 ----------
silicoid, А можно поподробнее? возможно будет более красивое решение?
silicoid, и в чём же здесь баг?
silicoid, А можно поподробнее? возможно будет более красивое решение?
более красивое решение - это действительно вынести в отдельную функцию. Но заставить JavaScript обрабатывать вновь созданные элементы автоматически - невозможно🙅
Если я правильно понял написанное Вами - вполне себе возможно. Вот так:
Рабочий пример jsfiddle
Для старых версий jquery ниже jQuery 1.7 стоит использовать delegate
Все дело в том, что при подгрузке документа Jquery слушает DOM, который был создан изначально. А append происходит уже после полной загрузки. $(document).ready(). Поэтому для самого Jquery Dom не обновляется.
Кстати $(function () {}) после $(document).ready() лишние. Т.к. это по сути своей одно и то же.
Comodo, Вы гений!!! Спасибо! получается вообще коротко и все работает!
Comodo, Вы гений!!! Спасибо! получается вообще коротко и все работает!
Ну и если задаавться вопросами производительности, то лучше вешать таким образом событие на элемент максимально близкий в DOM к тем, где будут возникать нужные вам события (т.е. на форму, куда вы эти инпуты добавляете, например), чтобы не захватить лишние.
Дикий пионер, Да, так и сделаю, спасибо. Тем более что нужно будет разные name прописать для разных инпутов,а это решит проблему без лишних костылей