Javascript 保留动态按钮初始属性的内存

Javascript 保留动态按钮初始属性的内存,javascript,d3.js,Javascript,D3.js,我想制作一个非常简单的混搭系统,用户从触发事件的select下拉菜单中选择项目。我有一些按钮是以一种相当即兴的方式附加到文档中的,也就是说,每当用户从select中选择某个内容时,就会出现一些文本以及一个删除该文本的按钮(以及相应的按钮)。我使用D3操作选择、添加类和附加内容。我使用类告诉按钮要删除哪些文本。尽管如此,我相信这仍然可能是我遇到的本地javascript问题。问题如下: 从选择下拉菜单中选择一些内容,然后继续按从下到上的顺序单击x按钮后,行为符合要求。但是,如果单击顶部或中间的按钮

我想制作一个非常简单的混搭系统,用户从触发事件的
select
下拉菜单中选择项目。我有一些按钮是以一种相当即兴的方式附加到文档中的,也就是说,每当用户从
select
中选择某个内容时,就会出现一些文本以及一个删除该文本的按钮(以及相应的按钮)。我使用D3操作选择、添加类和附加内容。我使用类告诉按钮要删除哪些文本。尽管如此,我相信这仍然可能是我遇到的本地javascript问题。问题如下:

选择
下拉菜单中选择一些内容,然后继续按从下到上的顺序单击x按钮后,行为符合要求。但是,如果单击顶部或中间的按钮,按钮将不会删除正确的文本。我相信这是因为按钮只是删除了我正在使用的动态类的最新字符串值。这让我怀疑这个按钮是否真的保留了它的
.on('click',function(){})
(因此文章标题)的初始属性

如果是这样的话,我真的不知道如何避免这个问题,因为按钮本质上是动态的


非常简短的示例。

不需要保留内存之类的东西,只要确保您的元素是可访问的。这样的场景是
将元素的id引用保存为另一个元素的类

d3.select('body').append('button')
    .text('X')
    .attr('id','b'+(intCount+1))
    .attr('class',choice+'1') //class is the id of the text element
    .on('click', function(d,i) {
    var t = d3.select(this).attr('id')
    var c = d3.select(this).attr('class')  
      var thisChoice = choice;

      d3.selectAll('.' + t).remove(); //remove this element
      d3.selectAll('.'+ c).remove(); //remove text element
      intCount -= 1;
      count -= .7;
    });
工作