Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   вызов функции в цикле (https://javascript.ru/forum/misc/80235-vyzov-funkcii-v-cikle.html)

Svet_lana 12.05.2020 15:58

вызов функции в цикле
 
Уважаемые эксперты, помогите
вот допустим есть div, b есть функция которая обрабатывает клик по этому div.

<div id="a1'>
Привет
</div>
<script>
$('#a1').click(function(){alert("test"); })
<script>

Это работает. А если у меня есть 10 таких div, как сделать цикл?
<script>
for(i=0; i<10; i++)
{
var f='a'+i;
$('#f').click(function(){alert("test"); })
</script>

Не работает.
Как правильно оформить цикл. Т.е. узнать по какому div кликнули?

laimas 12.05.2020 16:02

А зачем цикл? Установите один обработчик для нескольких по классу или по иному селектору, а в обработчике this (или event.target) укажет на источник события.

рони 12.05.2020 16:06

Svet_lana,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[html run]
... минимальный код страницы с вашей проблемой
[/html]

О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

рони 12.05.2020 16:08

Svet_lana,
вам не нужен цикл, вам нужно id заменить на class

Svet_lana 12.05.2020 16:14

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

laimas 12.05.2020 16:18

Цитата:

Сообщение от Svet_lana
а в цикл можно заключить?

Если ваши DIV будут иметь общий признак, например, одно имя класса или части имени класса/идентификатора, или одного общего родителя (братья), то просто указывайте эту коллекцию по общем признаку как селектору и устанавливайте один обработчик. Можно и делегировать обработку родителю. А цикл, это уже забота JQuery, то есть явно его применять не нужно.

Svet_lana 12.05.2020 16:26

Спасибо, сейчас попробую


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