【问题标题】:D3 - Using one SVG click event to affect anotherD3 - 使用一个 SVG 点击事件来影响另一个
【发布时间】:2013-12-05 19:07:57
【问题描述】:

这是对question I asked a few days ago 的跟进。

在我的图表上,我希望原始图标在单击时具有动画效果,并且我还希望说明性文字淡入视图。我已经使用 InkScape 制作了文本并将其链接到代码中(就像其他图标一样)。

var coal = svg.append("svg:image")
.attr("xlink:href", "nouns/coal.svg")
.attr("width", 35)
.attr("height", 35)
.attr("x", 10)
.attr("y", 30)
.on("click", function() {
    d3.select(this).transition()
        .attr("x", function() {return d3.select(this).attr("x") == 10 ? 80 : 10; })
        .attr("y", function() {return d3.select(this).attr("y") == 30 ? 150 : 30; })
        .attr("width", function() {return d3.select(this).attr("width") == 35 ? 100 : 35; })
        .attr("height", function() {return d3.select(this).attr("height") == 35 ? 100 : 35; })
        .duration(750);
    d3.select(".coaltext").transition()
        .attr("opacity", function() {return d3.select(".coaltext").attr("opacity") == 0 ? 100 : 0 })
});

    svg.append("g")
        .append("svg:image")
        .attr("xlink:href", "testtext.svg")
        .attr("id", "coaltext")
        .attr("height", 200)
        .attr("width", 200)
        .attr("y", 170)
        .attr("x", 400)
        .attr("opacity", 0);

只有其他奇怪的事情是我收到以下错误消息: event.returnValue 已弃用。请改用标准 event.preventDefault()。 --jquery.min.js:2

这很奇怪,因为我没有将任何 jquery 库加载到我的脚本中。嗯。

【问题讨论】:

  • 你有什么问题?如果我理解正确,除了警告之外的一切都很好?
  • 我也经常看到这个警告并且习惯于忽略它。我怀疑它是由某些 Firefox 插件引起的。
  • @LarsKotthoff 对不起,也许我不清楚。 'd3.select(".coaltext").transition() .attr("opacity", function() {return d3.select(".coaltext").attr("opacity")' 行不会导致所需的效果(即,使 coaltext SVG 对象变得不透明)。
  • 您似乎想使用#coaltext 而不是.coaltext
  • 额头一巴掌再次感谢@LarsKotthoff,我欠你一杯啤酒。

标签: javascript svg d3.js onclick transitions


【解决方案1】:

您似乎想在选择元素时使用#coaltext 而不是.coaltext——它是一个ID,而不是一个类。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-25
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多