在JQuery中查询内联样式属性

在JQuery中查询内联样式属性,jquery,html,css,Jquery,Html,Css,我正在为一些特定格式的HTML编写一个JQuery HTML解析器,我需要为一个值查询一个内联样式 在代码中,我将逐步遍历特定的输入字段,并将此特定样式保存到数组中 首先,这里是我用来逐步遍历这些输入字段并获取宽度的代码。这可以工作,但不会返回正确的宽度值(我需要EM值) 下面是其中一个输入框的简化示例 <input style="width:1.9500000000000002em;" maxlength="3" tabindex="1" class="inputBox" type="t

我正在为一些特定格式的HTML编写一个JQuery HTML解析器,我需要为一个值查询一个内联样式

在代码中,我将逐步遍历特定的输入字段,并将此特定样式保存到数组中

首先,这里是我用来逐步遍历这些输入字段并获取宽度的代码。这可以工作,但不会返回正确的宽度值(我需要EM值)

下面是其中一个输入框的简化示例

<input style="width:1.9500000000000002em;" maxlength="3" tabindex="1" class="inputBox" type="text">


谢谢你的帮助。谢谢

因为您正在检查属性而不是样式宽度

$(this).css('width')

当然,最简单的方法是从
this
style
属性中获取它

$('.inputBox', this).each(function(index) {
   widthArray[widthArray.length] = this.style.width;
});

从这里开始,这只是醉酒的猜测:理论上,您可以获得
style
属性,并根据
分割在其中找到的值。然后您可以在
上进一步拆分它们以获得键值对

比如:

$('.inputBox', this).each(function(index) {
   var stylestemp = $(this).attr('style').split(';');
   var styles = {};
   var c = '';
   for (var x = 0, l = stylestemp.length; x < l; x++) {
     c = stylestemp[x].split(':');
     styles[$.trim(c[0])] = $.trim(c[1]);
   }
   widthArray[widthArray.length] = styles.width;
});
$('.inputBox',this).each(函数(索引){
var stylestemp=$(this.attr('style').split(';');
var样式={};
var c=“”;
for(var x=0,l=stylestemp.length;x

不幸的是,jquery实际上只提供px值——这与width()方法b.t.w是一样的

有点脏,但是如果“width”是输入的唯一样式元素,您可以检索整个样式字符串并自己解析它:

var inputStyle = $("input").attr('style');
// make an array [ 'width', '1.9500000000000002em;' ]
var styleParts = inputStyle.split(':');
// make float from 1.9500000000000002em; --> 1.95
var widthEm = parseFloat(styleParts[1]);
由于javascript中的浮点精度,最终将丢失您的…0000002。
也许您需要使用字符串方法解析数字。

谢谢,但我已经尝试过了,它返回一个像素宽度。我想要样式中声明的实际EM值。-1这不起作用。看见
var inputStyle = $("input").attr('style');
// make an array [ 'width', '1.9500000000000002em;' ]
var styleParts = inputStyle.split(':');
// make float from 1.9500000000000002em; --> 1.95
var widthEm = parseFloat(styleParts[1]);