在官网中给出的代码[1]是有问题的,如下的代码并不能正常工作:

// Update…
var p = d3.select("body").selectAll("p")
.data([4, 8, 15, 16, 23, 42])
.text(String); // Enter…
p.enter().append("p")
.text(String); // Exit…
p.exit().remove();

结合参考文献[2],正确的工作方式有两种:

var bandMates =
[
{ "name":"John", "songs":302 },
{ "name":"Paul", "songs":300 },
{ "name":"George", "songs":231},
{ "name":"Pete", "songs":12 }
]; function draw(){
var content = d3.select("#graph").selectAll("div.member")
.data(bandMates, function(d){return d.name;}); var contentEnter = content.enter()
.append("div")
.classed("member",true); contentEnter
.append("div")
.text(function(d) { return d.name; }); contentEnter
.append("div")
.style("height", "40px")
.style("width", "0px")
.style("background-color", "#ff9999")
.transition()
.duration(1000)
.style("width", function (d){ return d.songs + "px";}); contentEnter
.append("div")
.text(function(d) { return "wrote " + d.songs + " songs!"; }); //方式1
  content.exit();
content.transition().delay(
1000).remove();
//方式2
  
d3.select("#graph").selectAll("div.member").data([]).exit().transition().delay(800).remove();
}

draw();

setTimeout(function() {
bandMates =
[
{ "name":"John", "songs":102 },
{ "name":"Paul", "songs":400 },
{ "name":"George", "songs":31},
{ "name":"Pete", "songs":212 }
];
draw();
}, 2000);

根据参考文献[2],必须保证调用 exit()和remove()函数的对象不是enter()到数据节点中;

另外,如果采用以上方式1中的方法,不能将exit()和remove()以链式方式写出,即:

content.exit()transition().delay(1000).remove(); 是没办法正常工作的。
但是方式2中将数据清空后为什么就可以以链式方式写出,个中缘由我也没搞清楚,如果哪位网友找到原因,请不吝指教。

Reference

[1]http://d3js.org/

[2]http://stackoverflow.com/questions/18068066/exit-not-working-properly.

d3 中exit() remove()正确工作的方式的更多相关文章

  1. 在IIS6中配置html文件以ASPX方式工作

    在IIS6中配置html文件以ASPX方式工作 由于IIS6的安全不断提高,如果你需要设置html文件以ASPX文件方式被执行.仅仅设置应用程序映射是不够的,还 需要修改一些其他设置. 如果你只修改了 ...

  2. .NET Core中使用RabbitMQ正确方式

    .NET Core中使用RabbitMQ正确方式 首先甩官网:http://www.rabbitmq.com/ 然后是.NET Client链接:http://www.rabbitmq.com/dot ...

  3. 学术Essay写作中Introduction的正确打开方式

    其实在学术essay写作过程中,很多留学生经常不知道如何写introduction,所以有些开头的模板句就出现了,比如,With the development of society/With the ...

  4. 详细分析 Java 中启动线程的正确和错误方式

    目录 启动线程的正确和错误方式 前文回顾 start 方法和 run 方法的比较 start 方法分析 start 方法的含义以及注意事项 start 方法源码分析 源码 源码中的流程 run 方法分 ...

  5. Kubernetes用户指南(三)--在生产环境中使用Pod来工作、管理部署

    一.在生产环境中使用Pod来工作 本节将介绍一些在生产环境中运行应用非常有用的功能. 1.持久化存储 容器的文件系统只有当容器正常运行时有效,一旦容器奔溃或者重启,所有对文件系统的修改将会丢失,从一个 ...

  6. Smart3D系列教程3之 《论照片三维重建中Smart3D几个工作模块的功能意义》

    [摘要] 近年来,倾斜摄影测量技术是国际测绘遥感领域近年发展起来的一项高新技术,利用照片进行三维重建成为一项关键性的技术.Smart3D软件,是照片三维重建主流软件之一,本文将就Smart3D建模软件 ...

  7. iOS开发中的4种数据持久化方式【二、数据库 SQLite3、Core Data 的运用】

                   在上文,我们介绍了ios开发中的其中2种数据持久化方式:属性列表.归档解档.本节将继续介绍另外2种iOS持久化数据的方法:数据库 SQLite3.Core Data 的运 ...

  8. 企业移动化?AppCan教你正确的打开方式

    七分选型.三分软件.的确,在过去的企业移动化进程中,由于选型失败导致信息系统实施失败的案例屡见不鲜.而在当今的移动互连和大数据时代,移动化已经是企业必然的选择. 那么,什么是企业移动化呢?怎样才是企业 ...

  9. SpringBoot 中 @RequestBody的正确使用方法

    SpringBoot 中 @RequestBody的正确使用方法 最近在接收一个要离职同事的工作,接手的项目是用SpringBoot搭建的,其中看到了这样的写法: @RequestMapping(&q ...

随机推荐

  1. Excel—如何解决数组求和运算时行列不匹配产生的错误

    1.如下所示: 使用SUM对两个数组A1:B2,C1:E3进行运算时,由于行列不匹配返回了错误值. 2.可通过使用IFERROR进行解决. 对判断生成的错误值,通过用0替代进行解决. 3.除以上外,由 ...

  2. 超详细Web前端开发规范文档

    http://www.w3cfuns.com/notes/26488/c2ae788c77f835357025026a148b9863.html

  3. ngSanitize和$sce

    (angular-ngSanitize模块-$sanitize服务详解) 本篇主要讲解angular中的$sanitize这个服务.此服务依赖于ngSanitize模块. 要学习这个服务,先要了解另一 ...

  4. PHP window下安装Spl_Types模块

    1. Window下,Spl_Types的模块的下载地址:http://pecl.php.net/package/SPL_Types/0.4.0/windows 2. php的可执行文件已经加到系统的 ...

  5. eclipse逐步调试

    Eclipse 的单步调试 1.设置断点在程序里面放置一个断点,也就是双击需要放置断点的程序左边的栏目上.2.调试(1)点击"打开透视图"按钮,选择调试透视图,则打开调试透视图界面 ...

  6. 关于试用jquery的jsonp实现ajax跨域请求数据的问题

    我们在开发过程中遇到要获取另一个系统数据时,就造成跨域问题,这就是下文要说的解决办法: 先我们熟悉下json和jsonp的区别: 使用AJAX就会不可避免的面临两个问题,第一个是AJAX以何种格式来交 ...

  7. Java算法之递归打破及在真实项目中的使用实例

    开心一笑 刚才领导问开发:"你觉得这个项目的最大风险是什么",开发说:"加班猝死" , 气氛尴尬了一分钟!!! 提出问题 1.递归算法简单复习 2.如何实现递归 ...

  8. 简单的SQL语句

    说明:SQL语句大小写都可以,执行一句时,后面可不加分号,如果同时执行两句,就必须加分号,不然会报错. --+空格  是SQL的注释 表格名为users,里面有name和age属性 一.增 inser ...

  9. October 31st Week 45th Monday 2016

    While there is life there is hope. 一息若存,希望不灭. Go on living even if there is no hope. Knowing is not ...

  10. October 26th Week 44th Wednesday 2016

    No matter how far you may fly, never forget where you come from. 无论飞得多高,也不要忘记起飞的地方. I never forget w ...