在JQuery中查询内联样式属性

时间:2011-04-06 08:57:13

标签: jquery html css

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

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

这里首先是我用来逐步浏览这些输入字段并获取宽度的代码。这有效,但没有返回正确的宽度值(我想要EM值)。

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

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

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

任何帮助表示赞赏。谢谢!

3 个答案:

答案 0 :(得分:8)

当然,最简单的方法是从style的{​​{1}}属性中获取它。

this

Live Demo

从这里开始,这只是醉酒的推测:理论上,您可以获取$('.inputBox', this).each(function(index) { widthArray[widthArray.length] = this.style.width; }); 属性并根据style拆分在那里找到的值。然后,您可以在;上进一步拆分它们以获取键值对。

类似的东西:

:

Live Demo of Drunken Speculation

答案 1 :(得分:1)

不幸的是,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。 也许你需要用字符串方法解析数字。

答案 2 :(得分:-4)

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

$(this).css('width')