我想知道是否有可能替换让我们说一个带有跨度的div(我可以做)但是将所有声明的css从该元素传递给新的?
的问候,
答案 0 :(得分:3)
如果你添加了class,id和style属性,它应该没问题。
var div = $('yourdivid');
var span = $('<span>',{
id:div.attr('id'),
html:div.html(),
class:div.attr('class'),
style:div.attr('style')
});
div.replaceWith(span);
演示http://jsfiddle.net/gaby/KQdGX/
请注意,通过CSS规则应用的定位标记div
的样式将无法再现..
答案 1 :(得分:0)
为什么不使用DOM元素的.style
?它是一个包含width和backgroundColor等成员的对象。
document.getElementById("id").style.property="value"
或者使用此代码 由Dakota
制作警告:此代码会产生大量输出,应谨慎使用。它不仅复制所有标准CSS属性,还复制该浏览器的所有供应商CSS属性。
jquery.getStyleObject.js:
/*
* getStyleObject Plugin for jQuery JavaScript Library
* From: http://upshots.org/?p=112
*
* Copyright: Unknown, see source link
* Plugin version by Dakota Schneider (http://hackthetruth.org)
*/
(function($){
$.fn.getStyleObject = function(){
var dom = this.get(0);
var style;
var returns = {};
if(window.getComputedStyle){
var camelize = function(a,b){
return b.toUpperCase();
}
style = window.getComputedStyle(dom, null);
for(var i=0;i<style.length;i++){
var prop = style[i];
var camel = prop.replace(/\-([a-z])/, camelize);
var val = style.getPropertyValue(prop);
returns[camel] = val;
}
return returns;
}
if(dom.currentStyle){
style = dom.currentStyle;
for(var prop in style){
returns[prop] = style[prop];
}
return returns;
}
return this.css();
}
})(jQuery);
基本用法非常简单:
var style = $("#original").getStyleObject; // copy all computed CSS properties
$("#original").clone() // clone the object
.parent() // select it's parent
.appendTo() // append the cloned object to the parent, after the original
// (though this could really be anywhere and ought to be somewhere
// else to show that the styles aren't just inherited again
.css(style); // apply cloned styles
答案 2 :(得分:0)
我有同样的问题,我调整了n得到了这个工作:
document.getElementById("destinationid").style.height = document.getElementById('sourceid').offsetHeight+"px"