[英]CSS and JQuery not working in Angular2 HostListener with IE 11 and Firefox
[英]Weird behavior of jquery css function on Firefox and IE 11
我试图做一些非常简单的事情,当我开始调试代码时,直到看到它,我才知道出了什么问题。 我简直不敢相信,这个简单的功能在Firefox或IE 11上将不起作用,而在Chrome上将起作用。
想象一下,我在这个div元素中添加了2个CSS类。
<div id="box" class="class1 class2"></div>
其中class2具有border-top属性。
.class2 {
border-top: 1px solid #626262;
}
现在,我想看看此box div是否具有任何border-top属性。
您认为的第一件事是:
$("#box").css("border-top")
对? 这将返回border-top属性(如果有)。 好吧,这在Chrome上有效,并返回border-top属性...在Firefox和IE 11中返回空字符串,这怎么可能?
有什么问题的主意吗? 或以其他方式在所有浏览器上获取它?
提前致谢。
编辑:最终做了一些对我有用的事情,与此无关。 我只是注意边框的宽度,我将宽度的值应用于0px以外的值。 更有道理,因为我有其他默认边框样式无缘无故地带有“ 0px none#000000”。
根据jQuery的CSS文档:
Retrieval of shorthand CSS properties (eg, margin, background, border), although functional with some browsers, is not guaranteed. For example, if you want to retrieve the rendered border-width, use: $( elem ).css( "borderTopWidth" ), $( elem ).css( "borderBottomWidth" ), and so on.
因此,基本上,您必须使用原始方法来查找每种浏览器用于许多属性的内容。...或者您可以按照A. Wolff的建议进行操作,而只需检查类即可。
您是否尝试过搜索更原子的CSS属性(即,非零的“ border-top-width”而不是“ border-top”)?
您应该能够获得单值属性(例如border-top-width
的计算值,但是对于多值属性(例如border-top
,浏览器,jquery和DOM API都存在差异:
for (var properties = ['border-top', 'border-top-width'], i = 0, l = properties.length; i < l; i++) { console.log(properties[i] + ': ' + $('#box').css(properties[i])); console.log(properties[i] + ': ' + window.getComputedStyle(document.getElementById('box')).getPropertyValue(properties[i])); }
.class2 { border-top: 1px solid #626262; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="box" class="class1 class2">This is a test.</div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.