2012-10-24 72 views
0

我有这样的事情:jquery .css()返回对象对象?

var windowH = $(window).height(); 
    var listH = $(".list").height(); 
    if(windowH > listH){ 
     $(".list").css({'height': windowH+'px'}); 
     alert(windowH); 
     alert($(".list").css({'height': windowH+'px'})); 
    } 

第二警报给我[object Object],因此不插入正确的CSS。有人可以帮忙吗?

感谢

+0

为什么不直接使用'$( '名单')。身高(windowH)'? – Blender

+0

他只想调整窗口高度> listHeight – tobspr

+0

@TobiasSpringer Blender在if语句中不是使用'.css({})'方法,而是使用'.height()'方法?不是一个坏主意,因为每个获取并设置使用整数... – Ian

回答

3

.css方法返回jQuery对象(用于方法链接),所以警告结果没有错。

而不是使用.css,尝试使用.height方法。

$(".list").height(windowH); 
+0

啊,这看起来更干净。如果我想减去像'50px'这样的'px',在这种情况下我该怎么做?它会更复杂吗? – hellomello

+0

@andrewliu'.height'返回一个整数。你不需要使用'px' – xdazz

3

$(el).css(propertyName, value)调用返回您正在使用的元素与,.

这样你就可以链接功能。

$(".list").css(propertyName, value).css(propertyName, value).remove(); // etc etc. 

windowH是最有可能的一个数字,尝试windowH.toString() + 'px'如果你想要像"600px"

+1

+1为了实际理解'.height()'返回一个整数。但你不需要'。toString()+'px''因为在字符串中使用'+'运算符会将整数隐式转换为字符串并追加“px”,因为“px”不是整数。 – Ian

+0

@ianpgall - 为'toString()'建议欢呼。在所有日子之间跳跃语言总是让我有点怀疑,所以我喜欢明确并保持安全:) – Aesthete

+0

哦,当然,很难记住什么语言隐含着什么,所以不用担心。尽管如此,你必须小心这些事情。如果你做'2 + 1 +'px'',你会得到“3px”。如果你这样做,'px'+ 2 + 1',你会得到“px21”。如果你做'2 + 1 +'px'+ 2 + 1',你会得到“3px21”。这是有道理的 - 操作从左到右完成,只要遇到字符串,它就会使用串联而不是添加。 – Ian

1

使用此:

alert($(".list").css('height')); 

当您在代码中调用.css()法地图键/值对喜欢它假设你正在试图设置的CSS属性,它返回你调用它的jQuery对象(其中alert()正确显示为"[object Object]")。这就是为什么您可以在.css({...})之后链接其他jQuery方法的原因。

如果你打电话.css()只是像上面显示的特定属性的名称然后它返回该属性的值,以便在alert()内工作。 (但请注意,如果你的jQuery对象有一个以上的元素,也就是说,如果".list"多个元素相匹配,.css('height')的第一个元素只返回高值。)

编辑:请注意,这种行为在.css()方法是与其他可用于设置和获取“某物”的jQuery方法相同,例如.val(),.html(),等。当使用参数设置值时,这些方法都会返回一个jQuery对象,但是当用参数得到一个值,它们都返回适当的值。

+0

如果你用任何参数调用'.css()',它就知道你正在尝试“设置”(2个参数 - 第一个是键,第二个是值)。空参数意味着“获得”。有时,但通常是它们使用的标准/模式 – Ian

+0

@ianpgall - 我认为不带参数调用'.css()'是有效的。如果你传递一个参数来指定你想获得值的css属性。 (其他方法如'.val()'在没有参数传递时做一个“get”)。 – nnnnnn

+0

废话,不是我的意思。你是对的,完全错误与'css' – Ian

0

首先,您必须设置属性,然后提醒适当的值。 ..

尝试

var windowH = $(window).height(); 
var listH = $(".list").height(); 
if(windowH > listH){ 
    $(".list").css({'height': windowH+'px'}); 
    alert(windowH); 
    $(".list").css('height', windowH+'px'); 

    alert(listH); 
} 
+3

这个例子它会提醒最初的'listH'值... – Ian