2013-05-24 2 views
0

저는 d3 및 js 프로젝트에서 작업하고 있습니다. 제가 인터넷 검색을 꽤 해봤Firefox event.clientX가 작동하지 않습니다.

$(document).ready(function() { 
    d3.select("#aid").select(".abutton").on("mousemove",function() { 
     afile.style("top", (event.clientY+10)+"px").style("left",(event.clientX+15)+"px"); 
     afile.html("<h3>Click text here</p><p>or here</p>"); 
    }); 

: 같은

함수의 시작이 보인다!

본질은 mouseover에 있으며 기능을 수행해야합니다. 이는 이벤트 변수가 전역 변수이므로 클라이언트 및 속성이므로 Chrome 및 IE에서 작동합니다.

솔루션에서 알다시피, eventObject를 전달하는 것입니다.

$(document).ready(function() { 
    d3.select("#aid").select(".abutton").on("mousemove",function(event) { 
     afile.style("top", (event.clientY+10)+"px").style("left",(event.clientX+15)+"px"); 
     afile.html("<h3>Click text here</p><p>or here</p>"); 
    }); 

FF로 로그 나 제공합니다 : 나는 그렇게 할 때처럼, 내 코드가 보이는

[09:59:04.308] TypeError: event is undefined @ filepathofjavascriptfile 

유사를, 그것은 크롬에서 나누기 : catch되지 않은 형식 오류를 : 정의되지 않은 재산 'clientY로'를 읽을 수 없습니다 filepathofjavascriptfile (익명 함수) help.js : 34 u

내가 뭘 잘못하고 있니? 미리 감사드립니다. 다른 것이 필요한 경우 알려 주시기 바랍니다.

+0

d3이 jQuery와 다르게 동작한다고 생각합니다. 이벤트 객체는 d3 객체의 속성으로 전역 적으로 저장됩니다. (나는 d3에 대해 많이 모른다. 그러나 나는 다른 날에 그것에 관해서 이야기를 보았다.) 사실 나는 'd3.event'라고 생각한다. – Pointy

답변

6

시도 : D3는 이벤트 객체를 노출하는 방법

어떤 이유를 들어
d3.select("#aid").select(".abutton").on("mousemove",function() { 
    afile.style("top", (d3.event.clientY+10)+"px").style("left",(d3.event.clientX+15)+"px"); 
    afile.html("<h3>Click text here</p><p>or here</p>"); 
}); 

, 즉이다.

+0

고마워, 그랬어! d3의 이벤트 리스너를 사용해야한다는 것을 알지 못했지만 이제는 더 이해가됩니다. – ajskhan

+0

설명서를 검색하면됩니다. https://github.com/mbostock/d3/wiki/Selections#wiki-d3_event – kelunik

관련 문제