This fiddle does what you want. I just made the following change:
// Toggle children
function toggle(d) {
console.log(d);
if (d.children) {
d._children = d.children;
d.children = null;
}
else {
closeSiblings(d);
d.children = d._children;
d._children = null;
}
}
function closeSiblings(d) {
if (!d.parent) return; // root case
d.parent.children.forEach(function(d1) {
if (d1 === d || !d1.children) return;
d1._children = d1.children;
d1.children = null;
});
}