Jquery *选择器查询

时间:2014-05-26 11:39:47

标签: jquery

我知道这可能听起来很简单,但不知怎的,我无法理解下面一段代码背后的逻辑

<!DOCTYPE html>
<html lang="en">
    <head>
        <script src="./js/jquery-1.7.2.min.js"></script>
    </head>
    <body>
        <script>
            alert("Dom Length:"+$('*').length);
            var a = "hi";
            alert($.type(a));
        </script>
    </body>
</html>

我得到输出为Dom Length:5但我不明白长度是如何填充的。

UPDATE1:

我认为它会选择DOM中的所有元素,计数会误导我。如果我在体内添加<p> hi </p>,还有一个补充:它仍显示长度为5.是正确还是应该是6?

4 个答案:

答案 0 :(得分:6)

嗯,你有这些标签:

  • 1 <html>
  • 1 <head>
  • 1 <body>
  • 2 <script>

所以1 + 1 + 1 + 2 = 5

答案 1 :(得分:4)

$('*')使用all-selector,您的页面中有5个元素:

  1. HTML
  2. 脚本
  3. 脚本
  4. 我建议你在控制台中运行它:

    $('*').get().map(function(e){ return e.tagName })
    

    编辑你的第二个问题:

    在正文中添加hi不会添加元素,而是添加文本节点,这就是计数不会更改的原因。阅读more about nodes and elements


    编辑您的评论:

    请注意,脚本不会看到自身之后的元素。如果您希望它看到整个DOM,请将其更改为

    $(function(){
        alert("Dom Length:"+$('*').length);
    });
    

答案 2 :(得分:1)

'*' 代表jQuery中的所有内容,因此当我们说$('*')时,它意味着所有DOM元素。

答案 3 :(得分:0)

您基本上是选择HTML的所有元素。

在这种情况下,您总共有5个元素。

确实,这是一个简单的问题。但是,你并不孤单。

我一直面临同样的问题,但使用参考卡很容易回答。

您可以从以下链接中获取一个:

http://marieraney.com/webclass/docs/jquery_selectors_refcard.pdf