gpt4 book ai didi

javascript - 循环中的 jQuery click()

转载 作者:行者123 更新时间:2023-12-03 05:32:37 25 4
gpt4 key购买 nike

我通过循环创建了 div 元素,我想在单击 div 时更改 background-color

var c = $("#container")[0];
for(var i=0; i<6;i++){
var x = document.createElement("div");
x.className = "sqare";
x.click(changecolor(this));
c.appendChild(x);
}
function changecolor(p){
return function() {
p.css("background-color", "yellow");
}
}

我关注这个Assign click handlers in for loop ,但失败了...

最佳答案

其中 this 不引用可能引用 window 对象的元素,而是传递 x 作为参数和 css()是一个 jQuery 方法,因此您需要使用 jQuery 包装它,或者使用 JavaScript 更新 style 属性。虽然通过设置onClick属性来附加点击事件。

var c = $("#container")[0];
for(var i=0; i<6;i++){
var x = document.createElement("div");
x.className = "sqare";
x.onClick = changecolor(p);
c.appendChild(x);
}
function changecolor(p){
return function() {
p.style.backgroundColor = "yellow";
}
}
<小时/>

这里可以避免闭包,因为可以在处理程序中访问 this 上下文。

var c = $("#container")[0];
for(var i=0; i<6;i++){
var x = document.createElement("div");
x.className = "sqare";
x.addEvenetListener('click', changecolor);
c.appendChild(x);
}
function changecolor(){
this.style.backgroundColor = "yellow";
}

<小时/>引用: addEventListener vs onclick

关于javascript - 循环中的 jQuery click(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40880027/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com