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

时间:2017-04-17 11:13:46

标签: javascript d3.js

我想创建一个非常简单的混合和匹配系统,用户从select下拉菜单中选择可触发事物的项目。我的按钮以袖口的方式附加到文档中,也就是说,每当用户从select中选择某些文本时,会出现一些文本以及删除该文本的按钮(以及相应的按钮)。我使用D3来操作选择,添加类和附加内容。我使用类来告诉按钮要删除哪个文本。所有这一切,我相信这仍然只是我遇到的本机JavaScript问题。问题如下:

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

如果是这样的话,我不确定如何规避这样的问题,因为按钮本质上是动态的。

非常简短的示例here

1 个答案:

答案 0 :(得分:2)

无需保留记忆类型的东西,只需确保您的元素可访问,这样的场景就像这样save the id reference of element as class of another element

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;
    });

工作FIDDLE