2016-06-13 3 views
0

У меня есть следующий код, чтобы добавить строку на холсте SVG. Я могу получить пробел, когда я дважды нажимаю на путь, когда появляется окно предупреждения, но сама строка не удаляется. Где я иду не так? Использую ли я this неправильно?Удалить путь по двойному клику d3

var lineFunction = d3.svg.line() 
        .x(function(d) { return d.x; }) 
        .y(function(d) { return d.y; }) 
        .interpolate("step"); 

lineGraph = layer.append("path") 
       .attr("d", lineFunction(lineData)) 
       .attr("stroke", "black") 
       .attr("stroke-width", 1) 
       .attr("fill", "none") 
       .attr("id","aggregation") 
       .attr("data", "newline") 
       .style('marker-end', "url(#end-arrow)") 
       .on("dblclick",function(d){ 
       alert("double"); 
       d3.this.remove(); 
       }); 

ответ

2

Метод .remove() должен быть вызван выбором D3. В обработчике события вы можете получить выбор, содержащий элемент, который был объектом события, делая

d3.select(this) 

Таким образом, изменение обработчика

.on("dblclick",function(d){ 
    d3.select(this).remove(); 
}); 

должны сделать трюк.

Смежные вопросы