Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Инициализация нажатия по динамически созданному элементу (https://javascript.ru/forum/dom-window/61387-inicializaciya-nazhatiya-po-dinamicheski-sozdannomu-ehlementu.html)

oklidog 16.02.2016 11:58

Инициализация нажатия по динамически созданному элементу
 
Приветствую, уважаемые! Подскажите, как решить такую задачу. На сайте при выполнении некоторых условий появляется уведомление с кнопками для нажатия, при нажатии на которые срабатывает дальнейший скрипт. Внести в него изменения нет возможности. Мне через определенное время необходимо эмитировать нажатие по одной из кнопок. Есть способ инициализировать нажатие на элемент, например следующим образом $('a.btn').click();, однако это не работает с динамически созданным элементом. Подскажите, как провернуть подобное действие с динамически созданной ссылкой?

DynkanMaclaud 16.02.2016 14:00

oklidog,
Цитата:

Сообщение от oklidog
На сайте при выполнении некоторых условий появляется уведомление с кнопками для нажатия

вот когда условие выполнилось, и уведомление с кнопками появилось, тогда нужно вешать обработчик на кнопку... А то вы при загрузке DOM вешаете,а кнопки в дом еще нету(((

destus 16.02.2016 14:10

Цитата:

Сообщение от DynkanMaclaud (Сообщение 408009)
oklidog,

А то вы при загрузке DOM вешаете,а кнопки в дом еще нету(((

И что? плагин Live Query https://github.com/hazzik/livequery/ решает это.

AciDWarrioR 16.02.2016 14:13

oklidog,
Ну если вам надо раз нажать через какое то время, то setTimeout. Если же периодически, то setInterval.
Надеюсь поможет
<!DOCTYPE html>
<html lang="en">
<head>
	<script src="http://code.jquery.com/jquery-1.11.1.js"></script>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body onload=>
	<button onclick="newButton()">Нажми на меня</button>
</body>
</html>
<script>
function newButton(){
	var b1 = document.createElement('button');
	b1.innerHTML = 'нажмется';
	b1.onclick = onclickB1;
	b1.classList.add('b1');
	document.body.appendChild(b1);
	setTimeout('$(".b1").click()', 2000);
}
function onclickB1(){
	alert('якобы нажали через две секунды');
}
</script>

DynkanMaclaud 16.02.2016 18:42

destus,
тоесть по вашему, для решения данной задачи, оптимальным вариантом считается установка отдельного плагина? (Но плагин хорош, в этом с вами не спорю)

Deff 16.02.2016 18:45

DynkanMaclaud,
Мон подсунуть в загружаемый модуль пикcельную прозрачку с вызовом функции установки обработчика
<img scr="blank.gif" onload="setBinderClick()">

destus 16.02.2016 18:50

Цитата:

Сообщение от DynkanMaclaud (Сообщение 408048)
destus,
тоесть по вашему, для решения данной задачи, оптимальным вариантом считается установка отдельного плагина? (Но плагин хорош, в этом с вами не спорю)

Ну это уже автору определять, исходя из того какие он задачи решает. Наша задача показать, какие технологии решения есть для этого. :)


Часовой пояс GMT +3, время: 09:16.