jQuery无法找到元素

5

jQuery无法找到任何元素。每次alert($("#testbutton").length);都会显示0。

我做错了什么吗?

我的JS / jQuery代码:

(function ($) {
    alert($("#testbutton").length);
}) (jQuery);

我的HTML代码:

<html>
    <body>
        <div id="header">
            <div class="button" id="testbutton">Test</div>
        </div>
    </body>    
</html>

你的代码在fiddle上完全可以正常运行。http://jsfiddle.net/2CX2y/ - Bishnu Paudel
4个回答

8
当您的代码运行时,DOM尚未准备好,因此元素不存在。您是否意味着使用以下方式(将函数传递给jQuery是$(document).ready(fn)的快捷方式):
$(function () {
    alert($("#testbutton").length);
});

(function ($) { })(jQuery); 相当于 $(function(){}); - Vivek S
2
@InternalServerError - 不是的。它只是一个立即执行的函数表达式,它传递了jQuery对象。第二个完全不同 - 将函数传递给jQuery。 - James Allardice
2
我不相信这是真的;第一个是IIFE,它只是将jQuery变量传递给正在执行的函数;第二个是$(document).ready(function(){});的简写形式。 - jackwanders

2
如果您在头部编写jQuery脚本,请使用以下方法:
(function() {

    ...

})();

由于它可能在加载页面正文内容之前执行脚本,因此它无法工作。

解决方法:

$(document).ready(function() {

    ...

});

或者将你的脚本移动到底部。

1

在文档准备就绪时调用它,如下所示:http://jsfiddle.net/SwQUH/

$(document).ready(function() {
  alert($("#testbutton").length);
});

如果你只是这样调用它,DOM 就不会“准备就绪”,HTML 元素也不存在。

0

请尝试以下操作

<script type="text/javascript">

首先确保加载 jQuery 时没有错误。

在 DOM 加载完成后放置一个警报,并检查所有内容是否正常。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接