Javascript 劫持CSS定义
我需要一种JavaScript/jQuery方式来“劫持”不基于类或ID的CSS定义 CSS示例:Javascript 劫持CSS定义,javascript,jquery,css,Javascript,Jquery,Css,我需要一种JavaScript/jQuery方式来“劫持”不基于类或ID的CSS定义 CSS示例: input { border: 1px solid red; } 如果我有一个文档,比如说,其中有一个元素,我想将这个元素添加到这个定义中 所以我要做$(this.magicAwesome()和输入CSS定义中定义的红色边框也将应用于此非输入元素 有没有办法达到这个效果?我不在乎它是否有点粗俗。:) 提前多谢 您可以读取选定元素的计算样式,然后复制该样式,或者从样式表本身读取CSS声明。
input {
border: 1px solid red;
}
如果我有一个文档,比如说,其中有一个
元素,我想将这个元素添加到这个定义中
所以我要做$(this.magicAwesome()代码>和输入CSS定义中定义的红色边框也将应用于此非输入元素
有没有办法达到这个效果?我不在乎它是否有点粗俗。:)
提前多谢 您可以读取选定元素的计算样式,然后复制该样式,或者从样式表本身读取CSS声明。由于IE与标准的对比,阅读样式表有点痛苦
见:
您可以从临时“捐赠者”元素复制所有样式,并将其设置为您的范围:
它可以满足您的所有需求:
- 它将span的样式更改为“输入”的css样式
- 它叫magicAwesome李>
- 奖励:这是一种黑客行为
守则:
$.fn.magicAwesome=function(){
var donor=$('<input />').appendTo('body');
$(this).css(donor.getStyleObject());
donor.remove();
}
$.fn.magicAwesome=function(){
var施主=$('').appendTo('body');
$(this.css(donor.getStyleObject());
捐赠者。移除();
}
然后设置一个单击事件或其他事件来触发函数$(this).magicAwesome()代码>
我使用了来自的getStyleObject函数,如果你知道你想要从样式表复制什么,你可以试试这个:为什么你不能修改你的CSS选择器?解决这个问题的方法基本上意味着你发现了一个浏览器错误。长话短说,CSS定义是第三方库的一部分,我正在用一个插件扩展它。我不想因为明显的前向兼容性原因而弄乱库的原始代码,但我确实需要一个非匹配元素来假设相同的样式。看起来很有希望。谢谢,我去看看!不一样,因为它会在此时设置所有计算样式及其计算值,因此将丢失除px以外的所有百分比值和其他单位。由于所有规则都已设置,它将覆盖在目标元素上设置的任何(和所有)其他样式。是的,但据我所知,这是最接近他想要的样式,否则他必须将跨度更改为输入。。。(就像我说的:这很粗俗)。