为什么jQuery不能准确地从内联css查询顶级样式?

时间:2012-07-20 20:52:28

标签: jquery

我正在尝试根据css属性进行选择(在我的情况下为top)。

HTML:

<i style="top:1px;">1px</i><br/>

JS:

$('i').each(function() {
    var top = $(this).css('top');
    console.log('top = '+top);
    if(top == '1px') j(this).css('border','1px solid green');
});

但这不起作用。 Top的值为'auto'。小提琴:http://jsfiddle.net/forgetcolor/qUjWq/

我猜这与计算样式(?)有关,但我不确定。这有什么用,有没有办法根据风格区分标签? (在我的应用程序中,我无法控制所写的HTML,因此不能选择更改它。)

4 个答案:

答案 0 :(得分:2)

打败我的原因,但你可以这样做:

var top = $(this).get(0).style.top;

答案 1 :(得分:2)

这不是jQuery,auto是正确的。仅当元素未定位为auto时才使用top属性,即:绝对,

http://jsfiddle.net/qUjWq/2/

否则你需要做@Mike所展示的事情。

答案 2 :(得分:1)

您需要为css分配postion属性,使其成为auto之外的其他属性。我已应用position:relative here (new jsFiddle),现在正在使用。

http://jsfiddle.net/qUjWq/1/

答案 3 :(得分:-1)

我认为原来小提琴中只有一些拼写错误。 看一下这个 。 http://jsfiddle.net/eQVar/ 我没有改变任何东西。(只是更正了错误,有一个j而不是$)。所以top可以在没有位置的情况下使用。 :)