检查行为是否附加到元素

时间:2014-02-10 13:41:12

标签: d3.js

问题是:如何检查元素上是否已调用d3行为(如拖动或缩放)?似乎这个任务与获取附加到元素的事件有关?常见的方法是什么?

感谢。

1 个答案:

答案 0 :(得分:0)

我知道这已经老了,但是我遇到了这个帖子,寻找同样的事情,看到没有答案,所以创造了我自己的答案。这适用于d3.js第4版。

function hasD3EventOn(ele, eventName, eventType) {
    if (!ele || typeof eventName == 'undefined') return !1;
    if (ele._groups) ele = ele._groups[0][0]; // if d3.select()
    var on = ele.__on; //d3.js(v4) function onRemove(typename)
    if (!on || !on.length) return !1; var i = on.length, o;
    while (--i >= 0) { if ((o = on[i]).name && o.name === eventName && (typeof eventType == 'undefined' || (o.type && o.type === eventType))) return !0; } return !1;
}

只需发送d3.select元素(仅限数组)或原生DOM元素以及事件名称(如“缩放”),两者都需要。还有事件类型的选项,例如'wheel'。它还有一些基本的验证(可能是过多的),以帮助防止在使用垃圾或属性名称collison调用时崩溃。