jQuery DIV文件体全高度DYNAMICALLY

时间:2011-07-04 21:11:28

标签: jquery dom height element

我已经看过几十个看起来完全相同的问题...但这些解决方案都没有起作用。

我的代码不是很复杂 - 我正在创建一个DIV,将id与它相关联,给它一个高度,然后添加DOM元素:

S = document.createElement('div'); S.setAttribute('id','viewbg'); var pageHeight = getVpHeight(); $('#viewbg').css('height', pageHeight + 'px'); document.getElementsByTagName('body')[0].appendChild(S);

当我在getVpHeight函数调用之后发出警报(pageHeight)时,它具有正确的高度(完整文档高度,而​​不仅仅是窗口大小),但div ALWAYS默认为样式表中定义的原始css样式,忽略任何新的号。

我已经尝试在创建DOM之后更改高度但是它做了同样的事情。我也尝试过jQuery(window).resize函数,但没有做任何事情。

我错过了什么吗?是否有一个jQuery / CSS向导可以发现正在发生的事情?

2 个答案:

答案 0 :(得分:1)

问题是你在空选择器上调用css()方法(你选择的元素在DOM中不存在。

你可以这样做:

var pageHeight = $(window).height();
 S = $('<div>', {id:'viewbg',height: pageHeight} );
$('body').append(S);

小提琴http://jsfiddle.net/urWJS/

答案 1 :(得分:0)

问题可能只是你的样式表覆盖了你要添加的样式。

你试过了吗?

 $('#viewbg').css('height', pageHeight + 'px !important');

<强>更新

正如Nicola指出的那样,你正试图从尚未插入的页面中抓取一个元素,因此你无法按照自己喜欢的方式设置它。

除了Nicola的回答之外,我还要指出你可以使用jQuery从它存在的变量中选择它来设置元素的样式,如下所示:

$(S).css('height', pageHeight + 'px'); 

完整来源:

S = document.createElement('div');
S.setAttribute('id','viewbg');
var pageHeight = $(window).height();
$(S).css('height', pageHeight + 'px');
$('body').append(S);

更新2

要获取文档的高度而不是可以使用的窗口高度:

var pageHeight = $(document).height();

http://jsfiddle.net/urWJS/2/