将CSS属性继承/扩展到另一个元素

时间:2011-06-08 10:48:49

标签: javascript jquery html css

jQuery将CSS属性从一个元素扩展/继承到另一个元素的最有效方法是什么?

期望效果

$('#blah').extendCSSTo('#me') // Is there a plugin or a good way to do this?
$('#me').css({ background: 'blue' });

#me现在拥有#blahbackground

的所有CSS

CSS:

#blah {
    padding: 5px;
    width: 200px;
    height: 20px;
    border: 1px solid #333;
    font-family: "Verdana";
}

#me {
    position: absolute;
    left: 5px;
    top: 5px;
}

<div id="blah"></div>
<div id="me">test</div>

编辑:这将在插件中使用,因此使用类只是执行.addClass不是一个选项

我正在寻找与为插件选项设置默认值相同的效果,而是寻找CSS:

$.extend([css object], [#blah css object], [#me css object])

3 个答案:

答案 0 :(得分:2)

$('#me').addClass('class');

这可行,但不确定您是否可以使用相对于ID的CSS。

答案 1 :(得分:1)

试试这个。

function CloneStyle(sourceID, targetID){
    var myStyle;
    var source = document.getElementById(sourceID);
    var target = document.getElementById(targetID);
    if (window.getComputedStyle) {
        myStyle = window.getComputedStyle(source).cssText;
    }
    else if (source.currentStyle) {
        myStyle = $.extend(true, {}, source.currentStyle);
    } else {
        throw "antique browser!";
    }
    target.style.cssText = myStyle;
}

现在打电话给。

CloneStyle("blah", "me");
$('#me').css({ background: 'blue' });

在这里小提琴:http://jsfiddle.net/naveen/3FdDp/

答案 2 :(得分:0)

如果您要使用CSS类而不是ID引用,则可以执行以下操作:

$("#me").addClass($("#blah").attr("class"));

将这些类从#blah复制到#me