我正在尝试创建一个“ for”循环,以将功能添加到日历中的每一天 点击该按钮会生成一张包含当天被点击课程说明的卡片。
我的问题是,它会在我加载日历的第二秒内构建当月所有天的所有卡片,而无需等待我单击特定元素。
这是我的代码中与此问题相关的一部分
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
}
答案 0 :(得分:1)
您可以使用on()
为动态创建的元素附加事件。然后在匿名函数内部调用该函数,如下所示:
更改:
$(`day${i}`).click(showCard(date,i));
收件人
$('ul').on('click', `.day${i}`, function { showCard(date,i) });
答案 1 :(得分:0)
您必须将元素与事件绑定
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
}