【问题标题】:Switch style property on element hover using JQuery/Reactjs使用 JQuery/Reactjs 在元素悬停时切换样式属性
【发布时间】:2014-09-04 21:02:32
【问题描述】:

我在最初的问题上犯了一个错误(我的代码在我更改后无法运行),所以我更改了这个

我在父组件处动态创建了一些radial-element,总是成对的(element, element-hover)

render: function() {
    var gradientID = "gradient" + this.props.c.id;
    var gradientID_hover = gradientID +"-hover"

    return (
        <g className={this.props.c.id}> 
            <defs>
                <radialGradient id={gradientID} fx="50%" fy="50%" r="65%" spreadMethod="pad">
                  <stop offset="0%"   stopColor={this.props.c.color[0]} stopOpacity="0.8"/>
                  <stop offset="100%" stopColor={this.props.c.color[1]} stopOpacity="1" />
                </radialGradient>

                <radialGradient id={gradientID_hover}   fx="50%" fy="50%" r="65%" spreadMethod="pad">
                  <stop offset="0%"   stopColor={this.props.c.color[3]} stopOpacity="0.8"/>
                  <stop offset="100%" stopColor={this.props.c.color[4]} stopOpacity="1" />
                </radialGradient>
            </defs>
        </g>
    )
}

在子元素中,我在 path 元素上使用该 id,如下所示:

render: function() {
    var fillURL = "url(#"+this.props.gradientID+")";
    return (
        <g className={this.props.country.id}>
            <path stroke="#000000" fill={fillURL} d={this.props.country.path} strokeOpacity="0.25" strokeWidth="1.5"></path>
        </g>    
    );
}

如何在悬停时更改路径的填充属性?我尝试过这样的事情:

componentDidMount: function() {
    var element = this.getDOMNode().firstChild;
    $(element).hover(function(){
        element.backup = element.style.fill;
        element.style.fill = element.backup+"-hover";

    }, function(){
        element.style.fill = element.backup;
    });
},

并且没有工作,因为该属性包含整个网址“url(#gradientID)”并且悬停它将是 “url(#gradientID)-悬停”。

我知道我可以将旧属性解析为新属性“url(#gradientID-hover)”,但我希望有更好的方法来做到这一点

【问题讨论】:

  • 而且您无法更改同一 :hover CSS 规则中的两个样式属性,因为为什么?
  • 我无法解释这一点,因为我使用 ID 动态创建 RadialGradient 元素,并且当我设置“填充”属性时,我传递了该 ID

标签: javascript jquery svg hover reactjs


【解决方案1】:
$('yourID').hover(function(){ $('targetID').css('targetAttr','attrVal') });

你尝试过这样的事情吗?

【讨论】:

  • 你能解释一下使用 .css() 悬停的单个函数会做什么吗?抱歉,我错过了一个重要信息,请参阅我的编辑。谢谢
猜你喜欢
  • 2014-11-04
  • 2014-07-18
  • 1970-01-01
  • 2019-01-11
  • 1970-01-01
  • 1970-01-01
  • 2011-11-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多