.css()在页面加载时没有得到正确的值

时间:2017-03-22 18:18:04

标签: jquery html css

我在页面加载时使用以下代码调用.css()函数:

$(function(){

var positionLeft = parseInt($(".wrapper").css("margin-left"))-50;
if (isNaN(positionLeft)){
    console.log(positionLeft);
}

$("#full-wrapper").css("margin-left",(positionLeft+"px").toString()); 

});

由于某种原因,positionLeft始终为NaN。如果我使用setInterval(fn,1),并在1ms后请求positionLeft,则positionLeft与预期一致。这是怎么回事?

2 个答案:

答案 0 :(得分:0)

我认为你需要最终删除.toString()函数并将其设置为如下所示,因为你在这里真的不需要toString() - 无论如何都可以正常工作:< / p>

$("#full-wrapper").css("margin-left", positionLeft+"px"); 

自己看看:

&#13;
&#13;
$(function() {

  var positionLeft = parseInt($(".wrapper").css("margin-left")) - 50;
  if (isNaN(positionLeft)) {
    console.log(positionLeft);
  }

  $("#full-wrapper").css("margin-left", positionLeft + "px");

});
&#13;
.wrapper {
  margin-left: 150px;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="wrapper">.wrapper</div>
<div id="full-wrapper">#full-wrapper</div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

jQuery document.ready vs self calling anonymous function

你的自我调用功能是竞争条件,看起来它赢了。在尝试访问DOM元素值之前,将函数包装在document.ready()中以确保文档已准备好(已初始化)。