-1
질문 : 끌기 또는 확대/축소와 같은 d3 동작이 요소에서 이미 호출되었는지 확인하는 방법은 무엇입니까? 이 작업은 요소에 연결된 이벤트를 가져 오는 것과 관련이있는 것으로 보입니까? 일반적인 접근 방식은 무엇입니까?동작이 요소에 연결되어 있는지 확인하십시오.
감사합니다.
질문 : 끌기 또는 확대/축소와 같은 d3 동작이 요소에서 이미 호출되었는지 확인하는 방법은 무엇입니까? 이 작업은 요소에 연결된 이벤트를 가져 오는 것과 관련이있는 것으로 보입니까? 일반적인 접근 방식은 무엇입니까?동작이 요소에 연결되어 있는지 확인하십시오.
감사합니다.
나는 이것이 오래된 것을 알고 있지만, 나는이 게시물을 찾아 왔는데, 똑같은 것을 찾고, 대답이 없다는 것을 보았고, 대답은 내 자신을 만들었다. 이것은 모두 reqired된다, 그냥 또는 이벤트 이름과 함께 같은 '줌'와 같은 원시 DOM 요소 (첫 번째 배열에서만)를 d3.select 요소 중 하나 보내 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;
}
입니다 . '휠'과 같은 이벤트 유형에 대한 옵션도 있습니다. 또한 쓰레기 또는 속성 이름 collison으로 호출 할 때 충돌을 방지하는 데 도움이되는 기본 유효성 검사 (과도한)가 있습니다.
D3에서는 이것을 쉽게 확인할 수 있다고 생각하지 않지만 일반적으로 두 번 동작을 첨부하지 않아도됩니다. 이벤트 처리기는 단순히 덮어 쓰게됩니다. –
안녕하세요, Lars) 하나의 차트에서 결합 된 브러쉬 및 확대/축소 동작을 사용하여 논리가 복잡해 졌으므로 vars에 모든 배율/범위 등을 기억/할당하는 것이 어려워졌습니다. 요소가 이미 있는지 확인하는 것이 훨씬 쉽고 빠릅니다 내 경우의 행동. – Cassius
모든 것을 설정 한 후에 동작을 할당 할 수 있습니까? –