3
返回NaN的我有這樣的代碼:拖動行爲D3
var stage = d3.select("body").append("svg");
var points = [0, 50, 100, 150];
var letters = "drag".split(",");
var log = d3.select("#log");
//drag behaviour, will bind later
var drag = d3.behavior.drag()
.origin(Object)
.on("drag", dragmove);
//append texts
var texts = stage
.selectAll("text")
.data(letters)
.enter()
.append("text")
.attr("font-family", "Arial")
.attr("class", "word")
.attr("x", function(d,i){return points[i]})
.attr("y", 100)
.text(function(d){return d})
.call(drag);
function dragmove() {
log.text(
"x: " + d3.event.x + ", " +
"y: " + d3.event.y + ", " +
"dx: " + d3.event.dx + ", " +
"dy: " + d3.event.dy
);
d3.select(this).attr("x", d3.event.x);
}
然而,d3.event.x
和d3.event.y
正在返回NaN
。有趣的是,d3.event.dx
和d3.event.dy
正在返回正確的值。我的代碼有什麼問題?
你可以看到這裏的jsfiddle:http://jsfiddle.net/UMwmr/
只是爲了添加到此。 drag.origin要求(x,y)位置作爲數據綁定到DOM元素。如果你想在原始代碼中註釋.origin(Object),它不會給NaNs(但仍然會有其他一些問題)https://github.com/mbostock/d3/wiki/Drag-Behavior#wiki-origin – nautat