jQuery函数放置

时间:2012-02-26 05:54:35

标签: javascript jquery

好的,所以我最近开始学习jQuery,但是我遇到了一个关于jQuery网站的小动画程序的问题。 所以这就是问题所在。该计划有效:

<HTML>
<HEAD>
<script type="text/javascript" src="javascript/jQuery-1.7.1.min.js"></script>

<STYLE type="text/css">

#content {
    background-color:#6688ff;
    position:absolute;
    width:100px;
    height:100px;
    padding:3px;
    margin-top:5px;
    left: 100px;
}
</STYLE>
</HEAD>
<BODY>
<input type="button" id="left" value="Left"/>
<input type="button" id="right" value="Right"/>
<div id="content">Move</div>
<script type="text/javascript">
$("#right").click(function() {
    $("#content").animate(
            {"left": "+=50px"},
            "slow");
});
$("#left").click(function() {
    $("#content").animate(
                {"left": "-=50px"},
            "slow");
});
</script>

</BODY>
</HTML>

但是这个程序没有:

<HTML>
<HEAD>
<script type="text/javascript" src="javascript/jQuery-1.7.1.min.js"></script>

<script type="text/javascript">
$("#right").click(function() {
    $("#content").animate(
            {"left": "+=50px"},
            "slow");
});
$("#left").click(function() {
    $("#content").animate(
                {"left": "-=50px"},
            "slow");
});
</script>

<STYLE type="text/css">

#content {
    background-color:#6688ff;
    position:absolute;
    width:100px;
    height:100px;
    padding:3px;
    margin-top:5px;
    left: 100px;
}
</STYLE>
</HEAD>
<BODY>
<input type="button" id="left" value="Left"/>
<input type="button" id="right" value="Right"/>
<div id="content">Move</div>


</BODY>
</HTML>

这两个程序的唯一区别在于我放javscript的位置,所以有人可以解释一下为什么会有所不同吗?谢谢,因为这让我感到困惑。

4 个答案:

答案 0 :(得分:3)

当第二个jQuery代码块运行时,文档还没有准备好,所以它不起作用。

始终将jQuery代码包装在$(document).ready()语句中:

$(document).ready() {
  $("#right").click(function() {
    $("#content").animate({"left": "+=50px"}, "slow");
  });

  $("#left").click(function() {
    $("#content").animate({"left": "-=50px"}, "slow");
  });
});

你的第二个代码块是正确的。

答案 1 :(得分:0)

浏览器加载/解析/渲染html和javascript从上到下,一个不起作用,因为你把它放在那些html元素之前,当它运行时它找不到那些html标签,使用jQuery就绪可以避免这个:http://api.jquery.com/ready/

答案 2 :(得分:0)

css应该出现在任何javascript之前,以便文档预先加载所有元素。

答案 3 :(得分:0)

第二个代码块在#right被声明之前引用right