首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jquery * Selector查询

Jquery * Selector查询
EN

Stack Overflow用户
提问于 2014-05-26 11:39:46
回答 4查看 84关注 0票数 0

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

代码语言:javascript
复制
<!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长度:5,但我不知道如何填充长度。

UPDATE1:

我以为它会选择DOM中的所有元素,计数是误导我的。此外,如果我在体内添加<p> hi </p>,它仍然显示长度为5,是正确的还是应该是6呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-05-26 11:41:53

$('*')使用全选择器,页面中有5个元素:

  1. html
  2. 脚本
  3. 正文
  4. 脚本

我建议您在控制台中运行这个程序:

代码语言:javascript
复制
$('*').get().map(function(e){ return e.tagName })

为您的第二个问题编辑:

在正文中添加hi不会添加元素,而是添加文本节点,这就是计数不变的原因。读更多关于节点和元素的信息

编辑您的评论:

请注意,脚本没有看到后面的元素。如果希望它看到整个DOM,请将其更改为

代码语言:javascript
复制
$(function(){
    alert("Dom Length:"+$('*').length);
});
票数 4
EN

Stack Overflow用户

发布于 2014-05-26 11:42:26

嗯,你有这些标签:

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

所以1 + 1 + 1 + 2 = 5

票数 6
EN

Stack Overflow用户

发布于 2014-05-26 11:43:48

'*'表示的并不全是jQuery,所以当我们说$('*')时,它意味着所有DOM元素。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23869257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档