我在页面加载时使用以下代码调用.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与预期一致。这是怎么回事?
答案 0 :(得分:0)
我认为你需要最终删除.toString()
函数并将其设置为如下所示,因为你在这里真的不需要toString()
- 无论如何都可以正常工作:< / p>
$("#full-wrapper").css("margin-left", positionLeft+"px");
自己看看:
$(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;
答案 1 :(得分:0)
jQuery document.ready vs self calling anonymous function
你的自我调用功能是竞争条件,看起来它赢了。在尝试访问DOM元素值之前,将函数包装在document.ready()
中以确保文档已准备好(已初始化)。