D3.js删除两个元素匹配属性时,连续单击
d3.js to remove two elements with matching attribute when clicked consecutively
我有两个具有相同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评估器的效果?
下面是带注释的最终工作解决方案:
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
相关文章:
- 手柄'img'单击事件并插入'alt'使用jQuery将属性转换为文本框
- 从其他元素上的单击事件访问image src属性
- 单击按钮时的窗口属性
- 单击TextArea'时,文本区域中的属性名称是什么;s上下箭头按钮
- 如何使用单击属性和工具提示动态创建表格单元格,该工具提示将超链接到页面
- 通过 JQuery 获取单击的复选框的值属性
- 在单击onclick属性后的按钮时执行f:setPropertyActionListener
- 单击没有 src 属性的 iframe 中的元素
- j查询在设置属性后在后续单击时不读取数据属性
- 如何防止jQuery在单击时更改href属性
- 使用CasperJS以特定格式单击具有可变属性值的元素
- 如何选择并单击没有 id 属性的按钮
- 单击“替换”时JS属性值
- 如果作用域值等于单击的元素的属性值,则Ng类
- (JavaScript/HTML)如何在单击按钮时更改样式属性中的显示
- 动态HTML包括一个Angular'ng单击'获胜的属性'不要开火
- 属性单击空值
- 为什么我收到“无法读取空错误的属性'单击'
- 修改文本框以使某些文本在使用占位符属性单击时消失
- 更改属性单击Javascript