пытаюсь добавить событие нажатия на JavaScript / jQuery - PullRequest
0 голосов
/ 27 июня 2018

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

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

это часть моего кода, которая имеет отношение к этой проблеме

for(let i=1;i<=numberOfDays;i++){  //go through all days and building them in a calendar
  $(`ul.days`).append(`
  <li class="day${i}">${i}</li>
  `)
   lessons(date,i); //this just mark the days that have lessons in them
   $(`day${i}`).click(showCard(date,i)); //for each day adds a function
}

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

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

Изменение:

$(`day${i}`).click(showCard(date,i));

К

$('ul').on('click', `.day${i}`, function { showCard(date,i) });
0 голосов
/ 27 июня 2018

Вы должны связать элемент с событием

for(let i=1;i<=numberOfDays;i++){  //go through all days and building them in a calendar
  $(`ul.days`).append(`
  <li class="day${i}">${i}</li>
  `)
   lessons(date,i); //this jsut mark the days taht have lessons in them
   $(`day${i}`).bind( "click", function() {showCard(date,i)}); <--//for each day adds a function
}
...