Javascript не работает динамически созданная кнопка

Динамически созданная кнопка не активизирует функцию

Добрый день, форумчане!
У меня проблема следующего рода.
Создано 2 кнопки: одна создает вторую, динамическую кнопку, а, в свою очередь, созданная кнопка должна запускать другую функцию с alert-ом.

Кнопка создается, но она не активна — не запускается нужная функция с alert-ом.
При всем при том, если я создаю статическую кнопку, то событие активизируется.

Подскажите пожалуйста в чем может быть проблема. Код вышеизложенной программы здесь со всеми изложенными выше элементами:

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Динамически созданная кнопка не появляется на форме
ПРивет, подскажите пожалуйста как создать кнопку при нажатии на другую знаю что можно : Button btn.

Программно созданная кнопка с методом и параметром отправляемым на функцию
У меня в программе есть цикл для создания нескольких элементов, в том числе и кнопок, и данные.

Динамически созданная форма не функционирует
Динамически через AJAX создается вот такой вот div:

Динамически созданная форма не принимает значения
Добрый вечер, прошу вас помочь с данной проблемой: Есть код, который разбивает строку по словам и.

Aleksey_FL, проблема в том, что вы сначала вешаете обработчик события на уже созданные элементы, а потом когда создаете элемент — не ставите ему обработчик события (который onclick).

Соответственно есть два решения этой проблемы:
1. После создания элемента добавлять ему обработчик события:

Источник

Динамическое создание кнопок не работает а дивов работает

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Не работает динамическое создание двумерного массива
Добрый вечер. Не могу понять, почему не работает программа. Какие бы значения я не задавал (кроме.

Не работает динамическое создание алиасов для команд
Помогите, пожалуйста, понять, почему не удается динамически создать алиасы для команд? Назначение.

Динамическое создание кнопок.
Можно сделать так, чтобы при нажатии на одну кнопку создавалась (не появлялась) кнопка?

динамическое создание кнопок
привет, мир! абсолютно не html/js разработчик. собственно требования в дизайне нет никакого. .

Решение

Решение

Динамическое создание кнопок
Всем, привет! Помогите, пожалуйста, у меня есть такой код программы, где создаются кнопки.

Динамическое создание кнопок
Здравствуйте,подскажите как реализовать данную функцию.Мне нужно,что бы при нажатии кнопки.

Динамическое создание кнопок
Как создать кнопку, я примерно представляю: TSpeedButton *lbl; lbl=new TSpeedButton(this);.

Динамическое создание кнопок
Кнопка start создает 5 label и button. Подскажите пожалуйста, как сделать так, чтобы при нажатии bt.

Динамическое создание кнопок
Всем доброго времени суток! Передо мною стала серьезная проблема! Имеется файл «test.txt», его.

Читайте также:  Discord как настроить роли

Источник

JQM: динамически созданная кнопка ничего не делает

Я создаю приложение с PhoneGap, используя jQuery и jQuery Mobile (1.3.2). Я просто не нашел способа заставить работать динамически создаваемую кнопку. Я использую привязку в качестве кнопки, поэтому «кнопка (« обновить »)» ничего не делает.

Сначала у меня есть кнопка, определенная в самом HTML, например:

Затем у меня есть Javascript, который добавляет действие к этой кнопке, как это:

Кнопка над РАБОТАЕТ, и она создает новый элемент ul, который содержит кнопку привязки. Я не могу заставить работать эту кнопку привязки. Это немного грязно, так как у меня есть несколько вариантов укладки. Многострочная строка работает, так как отображается весь элемент. addStepDiv ( ) :

Кнопка удаления должна что-то делать. Сейчас я поставил оповещение, чтобы посмотреть, работает ли кнопка. Предупреждение не отображается.

Все остальное работает. Кнопка «Добавить шаг» создает элемент ul, и он отображается правильно, а кнопка «Удалить» также отображается, но при нажатии ничего не происходит.

// РЕДАКТИРОВАТЬ: Я чувствую себя полным идиотом . Большое спасибо за ваши ответы (Sridhar R & JCabello). Проблема исправлена с помощью:

2 ответа

Поскольку элемент .delStepButton создается динамически, вам необходимо использовать делегирование событий для регистрации обработчиков событий для этих элементов.

Когда вы используете $(‘.delStepButton’).click(. ); для регистрации обработчика события, он зарегистрирует дескриптор только для тех элементов, которые уже присутствуют в dom во время выполнения кода, в вашем случае, поскольку эти элементы создаются после того, как обработчики будут не привязываться к вновь созданным элементам

Попробуй с этим

Попробуйте прикрепить слушателя к документу, а не к самому элементу, поскольку он не существует в тот момент, когда вы помещаете слушателя.

Источник

jQuery-событие щелчка не работает для динамически созданной кнопки [дубликат]

этот вопрос уже есть ответ здесь:

мое требование-создать количество кнопок, равное количеству массивов json. Мне удалось динамически создавать кнопки в jquery. Но метод есть .готовая функция jquery не вызывается для щелкните действие. Я пробовал искать в SO. Нашел несколько решений, но ничего не сработало для меня. Я очень новичок в jquery. Пожалуйста помочь.

мой код: библиотека jQuery:

EDIT — Sample .по методу код-отдельный файл: рабочий-большое спасибо

4 ответов

вы создаете кнопки динамически из-за этого вам нужно вызвать их с .live() метод, если вы используете jQuery 1.7

но этот метод устарел (вы можете увидеть список всех устаревших методов здесь) в новой версии. если вы хотите использовать jQuery 1.10 или выше вам нужно позвонить кнопки таким образом:

если ваш html что-то вроде этого

вы можете написать свой jquery, как это

Я предполагаю, что кнопки, которые вы создали, еще не на странице к моменту привязки кнопки. Либо привязать каждую кнопку в $.getJSON функция или используйте динамический метод привязки, например:

Читайте также:  Как настроить экран ноутбука asus

обратите внимание, что вы, вероятно, не хотите делать это на теге «body», но вместо этого оберните кнопки в другой div или что-то еще и вызовите on на нем.

простой и легкий способ сделать это-использовать на событие:

но мы можем сказать, что это не лучший способ, чтобы сделать это. Я предлагаю другой способ сделать это использовать метод clone() вместо использования динамического HTML. Напишите в файле html, например:

Теперь в теге скрипта сделайте клон этого div, тогда все свойства этого div также будут сопровождаться новым элементом. Например:

Теперь используйте элемент dynamicDiv везде вы хотите добавить его или изменить его свойства, как вам нравится. Теперь все функции jQuery будут работать с этим элементом

вы также можете создать кнопку «Вход» таким образом:

Это может быть синтаксис создания кнопки, которая каким-то образом.

Источник

Событие Click не работает с динамически генерируемыми элементами

Я пытался создать новый тег с именем класса test в

, нажав кнопку. Я также определил событие click, связанное с test . Но событие не работает.

Может ли кто-нибудь помочь?

Используйте ‘on’, поскольку щелчок получает привязку к уже присутствующим элементам.

Связывание click() , которое вы используете, называется «прямой» привязкой, которая привязывает обработчик только к уже существующим элементам. Он не будет привязан к элементам, созданным в будущем. Для этого вам нужно будет создать «делегированное» привязку с помощью on() .

Делегированные события имеют то преимущество, что они могут обрабатывать события из элементов-потомков, которые будут добавлены в документ позже.

Вышеупомянутое работает для тех, кто использует jQuery версии 1.7+. Если вы используете более старую версию, см. Предыдущий ответ ниже.

Предыдущий ответ:

Работал для меня. Пробовал его с помощью jsFiddle.

Или есть новый способ общения с delegate() :

Метод .on() позволяет вам делегировать любой желаемый обработчик событий:

текущие элементы или будущих элементов, добавленных в DOM позднее.

P.S: Не используйте .live() ! Из jQuery 1.7+ метод .live() устарел.

Причина:

Click() — прикрепляет обработчик событий только в том случае, если элемент уже существует в html-коде.

Он не будет рассматривать новый элемент, который создается динамически (элемент Future) после загрузки страницы.

Динамические элементы создаются с помощью javascript или jquery (не в html).

Таким образом, событие click не срабатывает.

Решение:

Чтобы преодолеть это, мы должны использовать функцию on().

функции delegate(), live() и on() имеют преимущества перед элементами DOM.

on может запускать как существующие элементы, так и будущие элементы.

on может рассматривать элементы, которые присутствуют на всей странице.

Функции делегата(), live() устарели (не используйте их).

Вы должны использовать функцию on, чтобы инициировать событие в динамически созданных (будущих) элементах.

Удалите код из $(document).ready:

Для этого вам нужно использовать . live:

Читайте также:  Neutrals filter не работает

или если вы используете jquery 1.7+, используйте .:

Попробуйте .live() или .delegate()

Ваш .test элемент был добавлен после метода .click() , поэтому у него не было привязанного к нему события. Live и Delegate придают этому событию триггер родительским элементам, которые проверяют своих детей, поэтому все, что добавлено впоследствии, все еще работает. Я думаю, что Live проверит весь документ, а делегат может быть передан элементу, поэтому делегирование будет более эффективным.

Добавить эту функцию в файл js. Он будет работать в каждом браузере

Лучший способ применить событие к динамически сгенерированному контенту с помощью делегирования.

поэтому ваш код будет таким же, как сейчас.

Я нашел два решения в документации jQuery:

Сначала: используйте делегат на теле или документе

Ответ.. Прикрепите обработчик к одному или нескольким событиям для всех элементов, которые соответствуют селектору, сейчас или в будущем, на основе определенного набора корневых элементов.
ссылка: http://api.jquery.com/delegate/

Второе: поместите свою функцию в «$ (document)», используя «on» и присоедините ее к элементу, который вы хотите вызвать.
Первым параметром является «обработчик событий», второй: элемент и третий: функция.
Например:

Ответ: Обработчики событий привязаны только к выбранным в данный момент элементам; они должны существовать на странице в момент, когда ваш код выполняет вызов .on(). Чтобы убедиться, что элементы присутствуют и могут быть выбраны, выполните привязку событий внутри обработчика документа для элементов, которые находятся в разметке HTML на странице. Если на страницу вводится новый HTML-код, выберите элементы и присоедините обработчики событий после того, как новый HTML будет помещен на страницу. Или используйте делегированные события для присоединения обработчика событий, как описано далее.
ссылка: https://api.jquery.com/on/

Проблема заключается в том, что вы пытаетесь связать класс «test» с событием, прежде чем что-либо с классом «test» в DOM . Хотя может показаться, что все это динамично, на самом деле происходит то, что JQuery делает проход через DOM и прокручивает событие click при запуске функции ready() , что происходит до того, как вы создали «Click Me», в событии кнопки.

Добавив событие «test» Click к обработчику кликов «button», он подключится к нему после того, как правильный элемент существует в DOM .

Использование live() (как указывали другие) — это еще один способ сделать это, но я также подумал, что было бы неплохо указать на незначительную ошибку в вашем JS-коде. То, что вы написали, было не так, просто нужно было быть правильно охвачено. Понимание того, как работают DOM и JS, — это одна из сложнейших вещей, которые многие традиционные разработчики обворачивают вокруг.

live() — это более чистый способ справиться с этим, и в большинстве случаев это правильный путь. По сути, он наблюдает за DOM и переустанавливает все, когда элементы внутри него меняются.

Источник

Оцените статью