Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 劫持CSS定义_Javascript_Jquery_Css - Fatal编程技术网

Javascript 劫持CSS定义

Javascript 劫持CSS定义,javascript,jquery,css,Javascript,Jquery,Css,我需要一种JavaScript/jQuery方式来“劫持”不基于类或ID的CSS定义 CSS示例: input { border: 1px solid red; } 如果我有一个文档,比如说,其中有一个元素,我想将这个元素添加到这个定义中 所以我要做$(this.magicAwesome()和输入CSS定义中定义的红色边框也将应用于此非输入元素 有没有办法达到这个效果?我不在乎它是否有点粗俗。:) 提前多谢 您可以读取选定元素的计算样式,然后复制该样式,或者从样式表本身读取CSS声明。

我需要一种JavaScript/jQuery方式来“劫持”不基于类或ID的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以外的所有百分比值和其他单位。由于所有规则都已设置,它将覆盖在目标元素上设置的任何(和所有)其他样式。是的,但据我所知,这是最接近他想要的样式,否则他必须将跨度更改为输入。。。(就像我说的:这很粗俗)。