gpt4 book ai didi

javascript - 为什么我不能使用 jQuery prop 来获取 CSS 设置?

转载 作者:太空宇宙 更新时间:2023-11-04 04:32:37 24 4
gpt4 key购买 nike

在 HTML 文件中,我创建了一个 DOM 元素:

<div id="colorOne"></div>

然后我在 css 文件中设置属性:

#colorOne{
position: absolute;
top: 70%;
left: 8%;
width: 36px;
height: 36px;
border-color: black;
border-width: 5px;
border-style: solid;
background-color: white;
}

然而,如我所愿

$('#colorOne').prop('width');    $('#colorOne').prop('height'); 

如果我想通过$.prop获取元素colorOne的任何属性,它只会显示undefined。但我也注意到,如果我将 prop 更改为 css,我可以获得我想要的。

如果我写

<div id="colorOne" style="width:36px;"></div>

$.prop 有效。

我想知道这是为什么。浏览器引擎如何处理这两种不同的写法?

(1.内联样式 2.在.css文件中设置属性)

最佳答案

如果你想用 jQuery 获得最终的计算样式,你需要使用 .css() .

这使用 getComputedStyle内部,因此您可以将它与来自多个不同来源的样式一起使用。

这是 jQuery 在内部做的事情:

function (elem, name) {
var ret, defaultView, computedStyle, width, style = elem.style;

name = name.replace(rupper, "-$1").toLowerCase();

if ((defaultView = elem.ownerDocument.defaultView) && (computedStyle = defaultView.getComputedStyle(elem, null))) {

ret = computedStyle.getPropertyValue(name);
if (ret === "" && !jQuery.contains(elem.ownerDocument.documentElement, elem)) {
ret = jQuery.style(elem, name);
}
}

// A tribute to the "awesome hack by Dean Edwards"
// WebKit uses "computed value (percentage if specified)" instead of "used value" for margins
// which is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values
if (!jQuery.support.pixelMargin && computedStyle && rmargin.test(name) && rnumnonpx.test(ret)) {
width = style.width;
style.width = ret;
ret = computedStyle.width;
style.width = width;
}

return ret;
}

当您执行 .attr.prop 调用时,您正在读取 HTML 特性/属性,不是样式。如果您阅读 style 属性,您只会得到 那个 而不是来自所有样式表等的实际计算样式。

关于javascript - 为什么我不能使用 jQuery prop 来获取 CSS 设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16999958/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com