为什么我不能让这个PJAX示例工作?

时间:2013-04-06 06:46:01

标签: d3.js

此页面演示了如何在d3中使用PJAX加载外部html文件: https://gist.github.com/mbostock/1367999

我已经准确地复制了这个: https://dl.dropboxusercontent.com/u/1531353/Misc/Docudocker/trialpjax/trial.html

但是,我的版本无效。当我点击一个链接(而不是将html加载到页面上)时,我收到一个DOM错误。我试图使用Chrome控制台找出导致DOM错误的确切原因无效。有什么我忘记复制的吗?

1 个答案:

答案 0 :(得分:1)

加载pjax("ul li a", "#main");时,content变量设置为“#main”

所以,在这个函数中:

function load(href) {
    d3.html(href, function(fragment) {
      var target = d3.select(content).node();
      target.parentNode.replaceChild(d3.select(fragment).select(content).node(), target);
      pjax(links, content); // reapply
    });
  }

在行中:

target.parentNode.replaceChild(d3.select(fragment).select(content).node(), target);

它正在查找已加载的文档片段中#main的内容。

但是,在您的情况下,没有#main因此它被设置为null。当您尝试使用null调用replaceChild时,您将收到您遇到的错误。

要解决此问题,请将其他页面设置为完成,每个页面都加#main