2013-03-27 76 views
0

在我的代碼中,我的更新選擇始終爲空,我的退出選擇也是如此,所以轉換從不運行。每次刷新時,我最終都會重新繪製整個DOM片段,就好像它之前從未存在過的一樣(即,我可以刪除所有內容,但.enter並且行爲不會更改)。D3中的更新選擇爲空

我正在利用data()中的一個關鍵函數來確保連接是按唯一值而不是按位置進行的。

整個代碼爲http://jsfiddle.net/colin_young/xRQjX/23/,但我已經提取什麼,我認爲是相關部門在這裏(基本上,我只是想跟隨General Update Pattern):

var key = function (d) { 
    return d.index; 
} 

var filterDistance = function() { 
var names = list.selectAll("div") 
    .data(byDistance.bottom(40), key); 

// Update 
names.attr("class", "update"); 

// Add 
names.enter() 
    .append("div") 
    .attr("class", "enter") 
    .style("opacity", "0") 
    .transition() 
    .duration(500) 
    .style("opacity", "1") 
    .text(function (d) { 
     return displayText(d); 
    }); 

// Remove 
names.exit() 
    .transition() 
    .duration(750) 
    .style("opacity", "0") 
    .remove(); 
}; 

回答