2014-02-10 3 views
-1

질문 : 끌기 또는 확대/축소와 같은 d3 동작이 요소에서 이미 호출되었는지 확인하는 방법은 무엇입니까? 이 작업은 요소에 연결된 이벤트를 가져 오는 것과 관련이있는 것으로 보입니까? 일반적인 접근 방식은 무엇입니까?동작이 요소에 연결되어 있는지 확인하십시오.

감사합니다.

+0

D3에서는 이것을 쉽게 확인할 수 있다고 생각하지 않지만 일반적으로 두 번 동작을 첨부하지 않아도됩니다. 이벤트 처리기는 단순히 덮어 쓰게됩니다. –

+0

안녕하세요, Lars) 하나의 차트에서 결합 된 브러쉬 및 확대/축소 동작을 사용하여 논리가 복잡해 졌으므로 vars에 모든 배율/범위 등을 기억/할당하는 것이 어려워졌습니다. 요소가 이미 있는지 확인하는 것이 훨씬 쉽고 빠릅니다 내 경우의 행동. – Cassius

+0

모든 것을 설정 한 후에 동작을 할당 할 수 있습니까? –

답변

0

나는 이것이 오래된 것을 알고 있지만, 나는이 게시물을 찾아 왔는데, 똑같은 것을 찾고, 대답이 없다는 것을 보았고, 대답은 내 자신을 만들었다. 이것은 모두 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으로 호출 할 때 충돌을 방지하는 데 도움이되는 기본 유효성 검사 (과도한)가 있습니다.

관련 문제