仕事で少しだけD3.jsを触った。サンプルを見ただけじゃ全然分からなかったけど、超懇切丁寧な日本語のチュートリアル http://ja.d3js.info/alignedleft/tutorials/d3/ が感動的なまでに分かりやすかた。
複雑怪奇なcssを駆使しなきゃならんjQueryより基本的な属性名が分かりやすいsvgとD3の時代がやって来るかもしらん。まあ残念ながら過去の遺産持ってる方が強いけどね。選挙でも現職が強いし。

exitがよくわからなかったので実験。

<!DOCTYPE html>
<html lang="ja">
  <head>
     <meta charset="utf-8">
     <title>D3 Test</title>
     <script type="text/javascript" src="d3.js"></script>
  </head>
  <body>
     <script type="text/javascript">
        var dataset = [1,2,3,4,5];
        var w = 500, h = 500;

        var svg = d3.select('body').append("svg")
           .attr("width", w)
           .attr("height", h);

        var circle = svg.selectAll('circle');
        circle.data(dataset).enter().append('circle').attr("cx", function(d, i) { return (i * 100) + 50; })
        .attr('cy', 250).attr('r', function(d, i){ return Math.sqrt((i+1) * 10);});

        setTimeout(function() {
          console.log("exit test");
          svg.selectAll('circle').data([1,2,3]).exit().remove();
          //circle.exit().remove();   // これだと何も起こらない
        }, 5000);
     </script>
  </body>
</html>

enter()/exit()が効くのは、data()関数でデータを与えて、データと要素とのペアを作って、なにか変換(描画とか)されるまでっぽい。
enter()で作った分を直後にexit()で、取得出来るのかと思ったけど、そういうわけではないようだ。
あたりまえと言えば当たり前だな。そんときは分からなかったけど。