Я пытаюсь разработать навигационное меню d3 без использования обычного подхода li/ul. Пока у меня есть 2 уровня, и я использую события мыши, чтобы вызвать изменения. Тем не менее, первый цикл работает нормально, и родительские элементы становятся черными, после чего вещи начинают вести себя странно, и эта строка не выполняется; svg.selectAll (".lvl1"). attr ("fill", "black"); но процесс remove() работает. Я что-то пропустил или это висит на событии? Любые идеи, которые помогут расширить этот подход до уровня 3, также будут оценены. https://jsfiddle.net/sjp700/djcc6kxq/d3 nav bar странное поведение при mouseout
lvl2.selectAll(".band")
.attr("width", function (d) { return d.width; })
.attr("height", 18)
.style("opacity", .5) // set the element opacity
.style("stroke", "black")
.attr("class", "tbd")
.style("cursor", "move")
.on('mouseover', over2)
.on('mouseout', out)
.attr("link", function (d) { return d.link; });
}
function out() {
var t = d3.select(this);
t.attr("fill", "pink")
setTimeout(function() {
svg.selectAll(".lvl2").remove();
svg.selectAll(".lvl1").attr("fill", "black");
}, 2000);
}
Вы не выбираете правильную вещь. Помните, что вы устраиваете прямоугольник. Поэтому выберите так: svg.selectAll ('. Lvl1 rect) – thatOneGuy