根据开发人员用CSS指定的内容,是否可以使用jQuery以百分比或像素为单位获取元素的宽度?

jor*_*ren 49 css jquery width

我正在编写一个jQuery插件,我需要做的是确定用户指定的元素的宽度.问题是.width()或.css('width')将始终报告精确的像素,即使开发人员已经使用CSS分配了宽度:90%.

有没有办法让jQuery输出px或%中元素的宽度,具体取决于开发人员用CSS给出的内容?

Mat*_*all 84

我想说最好的方法是自己计算:

var width = $('#someElt').width();
var parentWidth = $('#someElt').offsetParent().width();
var percent = 100*width/parentWidth;
Run Code Online (Sandbox Code Playgroud)

  • @joren - 请修改你的问题标题.它与你实际问题的含义相矛盾. (4认同)
  • 谢谢,这肯定会有用,但我想让脚本自动确定开发人员是否指定了百分比或像素,我认为不能这样做所以我只是将它添加为一个选项,他们可以传递给插入. (2认同)
  • @ user1386213没有.`.width()`总是返回一个绝对(#pixels)值. (2认同)

tim*_*com 10

这绝对是可能的!

您必须先隐藏()父元素.这将阻止JavaScript计算子元素的像素.

$('.parent').hide();
var width = $('.child').width();
$('.parent').show();
alert(width);
Run Code Online (Sandbox Code Playgroud)

看看我的例子.

  • 这真的很奇怪.元素可能会闪烁,并且它实际上并不依赖于这些函数的实际用途.如果这种行为改变怎么办? (2认同)

小智 9

我认为你可以直接使用样式表('style')对象访问.即便如此,YMMV也是由浏览器提供的.例如elm.style.width.

编辑Peter的评论:: 我不打算'得到%'.根据问题:

我需要能够做的是确定用户指定的元素的宽度... [有没有办法]以px或%输出元素的宽度,具体取决于开发人员用CSS给出的内容?

因此,我提供了一种替代方法来检索"原始"CSS值.这似乎适用于FF3.6.YMMV在其他地方(netadictos的答案可能更便携/通用,我不知道).同样,它并不是要"获得%".