sé que esto tendrán un aspecto áspero, pero funciona. Inicialmente, copiar todos los estilos calculados desde <td>
y aplicarlos a <div>
es fácil con this plugin from Mike Dunn. El inconveniente es eliminar los estilos del <td>
después de que se hayan copiado. From what I can tell, lo único que puede hacer es restablecerlos manualmente a los valores predeterminados con .css()
.
Working Example
$.fn.copyCSS = function (source) {
var dom = $(source).get(0);
var dest = {};
var style, prop;
if (window.getComputedStyle) {
var camelize = function (a, b) {
return b.toUpperCase();
};
if (style = window.getComputedStyle(dom, null)) {
var camel, val;
if (style.length) {
for (var i = 0, l = style.length; i < l; i++) {
prop = style[i];
camel = prop.replace(/\-([a-z])/, camelize);
val = style.getPropertyValue(prop);
dest[camel] = val;
}
} else {
for (prop in style) {
camel = prop.replace(/\-([a-z])/, camelize);
val = style.getPropertyValue(prop) || style[prop];
dest[camel] = val;
}
}
return this.css(dest);
}
}
if (style = dom.currentStyle) {
for (prop in style) {
dest[prop] = style[prop];
}
return this.css(dest);
}
if (style = dom.style) {
for (prop in style) {
if (typeof style[prop] != 'function') {
dest[prop] = style[prop];
}
}
}
return this.css(dest);
};
$('td').click(function() {
$('div').copyCSS('td');
$('td').removeAttr('style');
$("td").css({
'font-family': 'none',
'font-size': 'none',
'font-weight': 'none',
'font-style': 'none',
'color': '#000',
'text-transform': 'none',
'text-decoration': 'none',
'letter-spacing': 'none',
'word-spacing': 'none',
'line-height': 'none',
'text-align': 'none',
'vertical-align': 'none',
'direction': 'none',
'background-color': 'transparent',
'background-image': 'none',
'background-repeat': 'none',
'background-position': 'none',
'background-attachment': 'none',
'opacity': '1',
'width': 'none',
'height': 'none',
'top': '',
'right': '',
'bottom': '',
'left': '',
'margin-top': '0',
'margin-right': '0',
'margin-bottom': '0',
'margin-left': '0',
'padding-top': '0',
'padding-right': '0',
'padding-bottom': '0',
'padding-left': '0',
'border-top-width': '0',
'border-right-width': '0',
'border-bottom-width': '0',
'border-left-width': '0',
'border-top-color': '0',
'border-right-color': '0',
'border-bottom-color': '0',
'border-left-color': '0',
'border-top-style': '0',
'border-right-style': '0',
'border-bottom-style': '0',
'border-left-style': '0',
'position': 'static',
'display': '',
'visibility': 'visible',
'z-index': 'auto',
'overflow-x': 'auto',
'overflow-y': 'auto',
'white-space': 'normal',
'clip': 'auto',
'float': 'none',
'clear': 'none',
'cursor': 'default',
'list-style-image': 'none',
'list-style-position': '0',
'list-style-type': 'disc',
'marker-offset': '',
'padding': '0',
'transition': 'none',
'border-radius': 'none'
});
});
Nota: obviamente No he incluido un restablecimiento de todos los estilos posibles.
¿Cómo va a seleccionar que un elemento? –
Proporcione más detalles sobre el caso de uso. En otras palabras, ¿por qué? –
si se calcula o se hereda, no podrá simplemente eliminar un estilo. Un CSS en una clase no puede eliminarse de esta manera usando '.removeAttr ('style')'. también puede encontrar algunas respuestas interesantes aquí http://stackoverflow.com/questions/4781410/jquery-how-to-get-all-styles-css-defined-within-internal-external-document-w – TecHunter