0

代码段以插件方法运行,即$.fn.insideThisMethod()在页面加载时调用。在方法内部,它调用

$obj.css('height',$(window).height());

在 Chrome 中运行良好。IE9 但是我遇到以下情况: 在页面加载时,我可以看到一瞬间(当 jquery 尚未被触发时)$obj出现的背景。到目前为止,一切都很好。然后,当页面加载运行 jquery 代码时,背景中的另一个对象出现在它的位置,即由于$obj某种原因消失了。防止这种情况的唯一方法是alert('whatever');在进行上述调用之前将 a 放入 jquery 代码中$obj.css()。在这种情况下$obj,它应该在屏幕上的位置不会消失,一切都很好。请注意,如果我在调用 后发出警报,$obj.css()单击$obj确定后仍会从视图中消失。

我知道这是含糊的,但把它放在这里以防这可能是 jquery noobs 遇到的已知错误,并且以某种方式很容易纠正。

我猜这与它在浏览器加载时运行有关,可能一个资源还没有准备好,一旦警报框被解除就准备好了。

编辑:尝试将上述内容包装在$(document).ready(function(){}); 但行为没有改变。

4

2 回答 2

0

尝试:

$obj.css('height',$(window).height() + 'px');

或者:

$obj.height($(window).height());
于 2012-07-06T00:06:31.240 回答
0

我怀疑你找不到窗口高度的问题。尝试提醒窗口高度

如果窗口高度为零,则尝试在 window.load instread of document ready 处运行您的代码

  $(window).load(function(){
    $obj=$("SOME_SELECTOR");
    $obj.css('height',$(window).height()+'px')
  })

如果窗口高度正确,那么

有时应用样式不会强制浏览器呈现页面。在这种情况下,它与任何父元素的定位或某些元素的高度宽度有关。但我发现无论何时都很难调试。

解决方法是在元素或父元素或最后的主体上添加或删除类。

所以尝试 1 以下 1 by 1

$obj.css('height',$(window).height() +'px' ).addClass("dummyCalss").removeClass("dummyCalss");

or 

$obj.css('height',$(window).height() +'px' ).parenet().addClass("dummyCalss").removeClass("dummyCalss");

or

$obj.css('height',$(window).height() +'px' );
$("body").addClass("dummyCalss").removeClass("dummyCalss");
于 2012-07-06T00:30:39.323 回答