布尔问题

时间:2011-03-08 05:59:31

标签: javascript jquery boolean

所以,我正在一些书籍的帮助下自学jQuery,而且我现在被一个看似简单的问题困扰了。为什么$('div.foo').length的值为0?页面中存在div元素,那么$('div.foo').length为什么不评估为1?

<!DOCTYPE html>
<html>
<head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js" type="text/javascript">
        </script>
        <script type="text/javascript">
            document.write($(div.foo).length);
            </script>
    <body>
            <div class="foo"></div>
    </body>
</html>

5 个答案:

答案 0 :(得分:2)

 document.write($(div.foo).length) 

应该是

 document.write($("div.foo").length);

此外,您的脚本将在加载DOM之前运行,因此请尝试将JavaScript封装在jQuery中$(document).ready - 设置http://docs.jquery.com/Tutorials%3AIntroducing_%24(document).ready()

答案 1 :(得分:1)

你错过了引号

document.write($("div.foo").length);

编辑:

布拉德提出了一个很好的观点。你应该在document.ready

中打包这个电话
$(document).ready(function() { 
    document.write($("div.foo").length);
});

答案 2 :(得分:0)

简单:尚未加载DOM。

您有两种选择:

  1. 将代码放在</body>标记之前,以便加载文档元素,因此jQuery可以看到对象。
  2. 使用$(document).ready(function(){ ...code... })(或简写$(function(){ ...code... }),因此大括号内的代码仅在文档加载后执行。
  3. 尝试这两个尺寸:

    重新订购执行:

    <html>
      <head>
        <script src="jquery.js"></script>
      </head>
      <body>
        <div class="foo">
        <script>
          alert($('.foo').length);
        </script>
      </body>
    </html>
    

    等待加载的DOM *

    <html>
      <head>
        <script src="jquery.js"></script>
        <script>
          $(document).ready(function(){
            alert($('.foo').length);
          });
        </script>
      </head>
      <body>
        <div class="foo">
      </body>
    </html>
    

答案 3 :(得分:0)

您必须在创建dom元素后移动此代码,方法是在body标记之前移动它。目前,您甚至在DOM中创建元素之前都尝试访问它们。

   <script type="text/javascript">
        document.write($('div.foo').length);
   </script>

在DOM准备就绪后运行代码,即所有元素都在DOM中创建。

//this piece of code can be placed even before elements are created
    $(function(){
    //this code here, will run after DOM is ready
    });

答案 4 :(得分:0)

未加载DOM。使用

    $(document).ready(function() {
          alert($('div.foo').length); 
    });