当我没有将它放在jQuery(文档).ready中时,jquery无法正常工作

时间:2011-10-21 01:23:31

标签: php javascript jquery

jQuery(document).ready(function(){
    jQuery(".test").click(function() {
        alert(1);
    });
});

当我尽量不放:

jQuery(".test").click(function() {
            alert(1);
        });

jQuery(document).ready()内部无效。

您认为那个原因是什么?我已经加载了具有该功能的自定义脚本。

<script type="text/javascript" src="/scripts/js/jquery.js"></script>
<script type="text/javascript" src="/scripts/js/customScript.js"></script>

任何答案都会受到赞赏和奖励。

谢谢!

2 个答案:

答案 0 :(得分:2)

如果您在<head>中加载,那么您的代码执行时.test尚未加载。因此,jQuery(".test")会返回[],因此click事件无法附加。如果您将<script>移到<body>中的最后一个,它应该有用。

答案 1 :(得分:1)

您看到的行为正常且正确。

当你说:

jQuery(".test").click(function() {
   alert(1);
});

这意味着“使用类'test'找到现在现在的所有元素,并为这些元素分配一个点击处理程序”。如果您将此类代码放在文档之外,那么浏览器将不会解析在该脚本之后的任何HTML,因此它不会在页面下方找到任何已定义的元素 - 它们在DOM中不存在。

将代码放在document.ready中(或在onload事件处理程序中)意味着在整个页面被解析之前它不会运行,此时所有元素都将存在并且可以从代码中访问。 (如果你在所有HTML之后将它放在页面底部,它也应该有效。)