Javascript jQuery;在具有相同类的其他div中,从构造函数内部移除单击的div

Javascript jQuery;在具有相同类的其他div中,从构造函数内部移除单击的div,javascript,jquery,Javascript,Jquery,这是学校的作业。赋值的一部分是双击在类内部创建的div。当你双击它时,它应该被删除 html有一个按钮,用于创建div作为类的实例。效果很好。然后,我在div的类上放置了一个双击事件侦听器,并在类方法上放置了.remove()(参见代码) 但是当双击时,它会删除该div及其之后的所有div。我相信这是因为所有的div都有相同的类名 我可以在创建每个div时为其分配ID,并删除该特定div。我只是想知道是否有其他方法可以获取单击的div 我还尝试使用“this”来指代单击的div。但是,我需要“t

这是学校的作业。赋值的一部分是双击在类内部创建的div。当你双击它时,它应该被删除

html有一个按钮,用于创建div作为类的实例。效果很好。然后,我在div的类上放置了一个双击事件侦听器,并在类方法上放置了.remove()(参见代码)

但是当双击时,它会删除该div及其之后的所有div。我相信这是因为所有的div都有相同的类名

我可以在创建每个div时为其分配ID,并删除该特定div。我只是想知道是否有其他方法可以获取单击的div

我还尝试使用“this”来指代单击的div。但是,我需要“this”来连接到方法“this.removeOne”,所以我使用了一个arrow函数

下面是代码的基础。详情如下:

一句话:我想双击一个div并只删除那个div。给它一个id是唯一的方法吗

这个问题和堆栈上的其他问题非常相似,但我在将答案应用到这个特殊情况时遇到了困难——或者我需要更清楚的解释

//创建一个名为Die的类
级模{
构造函数(值){
//集值属性
这个值=值;
//为每个新对象创建一个div,分配类
this.div=$('').attr(“类”,“div”);
$(this.div).append(this.value);
$('.container').append(this.div);
//单击rollAll骰子按钮后,运行rollAll方法(如下)
$('#all')。单击(()=>this.rollAll());
//单击div时,运行下面的rollOne函数
$('.div')。单击(()=>this.rollOne());
//双击任何div时,运行下面的removeOne函数
$('.div').dblclick(()=>this.removeOne());
}
//再次掷所有骰子;获得随机数,替换div中的值
罗勒(){
this.value=Math.floor(Math.random()*6+1);
$(this.div).html(this.value);
}
//再次掷骰子
罗隆(){
this.value=Math.floor(Math.random()*6+1);
$(this.div).html(this.value);
}
//从显示和可使用骰子中移除单击的骰子
removeOne(){
$(this.div).remove();
}
}
//单击“添加所有骰子”按钮后,在每个div中添加值(文本),将总和显示为警报
$('#sum')。单击(函数(){
设和=0;
$('.div')。每个(函数(){
sum+=parseFloat($(this).text());//parseFloat将字符串转换为可求和的数字
})
警报(总和);
})
//掷骰1按钮生成随机数,创建骰子类实例
$('#btn')。单击(函数滚动(){
设val=Math.floor(Math.random()*6+1);
让模具=新模具(val);
})
.div{
边框:1淡黑色;
高度:20雷姆;
宽度:20%;
浮动:左;
显示器:flex;
对齐项目:居中;
证明内容:中心;
}

冒险的生意
辊1模具
掷骰子
加上所有的骰子

当前,每个实例化都会将单击删除此div的侦听器附加到所有
.div
s:

$('.div').click(() => this.removeOne());
因此,当单击任何
.div
时,每个侦听器都会触发,所有侦听器都会被删除。相反,在构造函数中,仅将侦听器附加到新创建的
.div

//创建一个名为Die的类
级模{
构造函数(值){
//集值属性
这个值=值;
//为每个新对象创建一个div,分配类
this.div=$('').attr(“类”,“div”);
$(this.div).append(this.value);
$('.container').append(this.div);
//单击rollAll骰子按钮后,运行rollAll方法(如下)
$('#all')。单击(()=>this.rollAll());
//单击div时,运行下面的rollOne函数
$(this.div)。单击(()=>this.rollOne());
//双击任何div时,运行下面的removeOne函数
$(this.div).dblclick(()=>this.removeOne());
}
//再次掷所有骰子;获得随机数,替换div中的值
罗勒(){
this.value=Math.floor(Math.random()*6+1);
$(this.div).html(this.value);
}
//再次掷骰子
罗隆(){
this.value=Math.floor(Math.random()*6+1);
$(this.div).html(this.value);
}
//从显示和可使用骰子中移除单击的骰子
removeOne(){
$(this.div).remove();
}
}
//单击“添加所有骰子”按钮后,在每个div中添加值(文本),将总和显示为警报
$('#sum')。单击(函数(){
设和=0;
$('.div')。每个(函数(){
sum+=parseFloat($(this).text());//parseFloat将字符串转换为可求和的数字
})
警报(总和);
})
//掷骰1按钮生成随机数,创建骰子类实例
$('#btn')。单击(函数滚动(){
设val=Math.floor(Math.random()*6+1);
让模具=新模具(val);
})
.div{
边框:1淡黑色;
高度:20雷姆;
宽度:20%;
浮动:左;
显示器:flex;
对齐项目:居中;
证明内容:中心;
}

冒险的生意
辊1模具
掷骰子
加上所有的骰子

通过从提供给所有事件处理程序的事件对象中获取元素,您应该能够将双击的元素传递给
removeOne

$('.div').dblclick((event) => this.removeOne(event.target));
然后在
removeOne
中,您可以执行以下操作:

removeOne(elem) {
  $(elem).remove();
}
removeOne(elem) {
  $(elem).remove();
}