Javascript d3.js在连续单击时删除两个具有匹配属性的元素

Javascript d3.js在连续单击时删除两个具有匹配属性的元素,javascript,jquery,d3.js,Javascript,Jquery,D3.js,我有两个具有相同href属性的元素。单击它们,添加一个类。 此外,如果第一个单击的元素的href等于第二个单击的元素的href,则将过滤掉它们 removeBubble = function(d) { var currentId; currentId = idValue(d); d3.select(this).classed("clicked",true); // on click add class if (d3.selectAll(".clicked

我有两个具有相同href属性的元素。单击它们,添加一个类。 此外,如果第一个单击的元素的href等于第二个单击的元素的href,则将过滤掉它们

  removeBubble = function(d) {

    var currentId;
    currentId = idValue(d);

   d3.select(this).classed("clicked",true);    // on click add class
   if (d3.selectAll(".clicked").length === 2 && // 2 elements class clicked
          d3.select(this).prev.attr("href") ===  // href of 1st elem
          d3.select(this).next.attr("href"))     // href of 2nd elem
          {
         // filter here
          }
  };
任务: 1.检查单击的元素是否具有匹配的href

如何在d3.js中实现.prev()和.next()-jQuery assessors-effect


到目前为止:未捕获类型错误:a.target.className.indexOf不是一个函数

removeBubble = function(d) {
  var currentId;
  currentId = idValue(d);

// when this clicked attach class

  var clicked = d3.select(this).classed("clicked",true);

 // ascribe href of elements with class clicked to variable

  var clicktext = d3.selectAll(".class1.clicked").attr("href");
  var clicklabel = d3.selectAll(".class2.clicked").attr("href");

// if no match remove class clicked and update
// else remove elements and update

   if ( clicklabel !== clicktext){
     console.log("it's not a match !");


     d3.selectAll(".clicked").classed("clicked",false);
     update();
     return d3.event.preventDefault();

 } else {  
    console.log("its a match !");


    data = data.filter(function(e) {
    return idValue(e) !== currentId;
    });
 }

 update();
 return d3.event.preventDefault();
};

关键是删除用于在连续单击两个具有不同href值的元素时标识元素的类:remove class,update=start fresh。

您能解释一下“代码不正确”是什么意思吗?发生了什么,是否有错误消息?这些是jQuery评估器;它们在d3.js代码中不起作用?此外,我的元素在href上匹配,它们彼此不相邻。我正在尝试使jQuery代码适应工作的d3.js。不确定要向控制台写入什么来进行测试。我想说,首先创建一个全局变量。在单击处理程序中,将单击的元素分配给该全局变量(如果未分配),或者检查单击的元素是否与分配给全局变量的元素的相关属性匹配。一旦你成功了,在闭包中保护变量和处理函数,这样你就不会有全局变量了。@Mousey谢谢你们,Ethan和Mousey花时间回答了这个问题。