Javascript Jquery使用id选择器返回一个列表

Javascript Jquery使用id选择器返回一个列表,javascript,jquery,jquery-selectors,Javascript,Jquery,Jquery Selectors,我在jquery和选择器使用以下代码时遇到问题: <div id="test"></div> console.log($('#test')); console.log($('#test')); 这总是返回一个类似[​​]而不是单个元素 这导致每次操作都必须编写$('#test')[0],而不仅仅是$('#test')。你知道为什么吗 Jquery不会返回HtmleElement,它返回一个Jquery对象 jQuery对象包含一个集合 文档对象模型(DOM)的定义

我在jquery和选择器使用以下代码时遇到问题:

<div id="test"></div>
console.log($('#test'));

console.log($('#test'));
这总是返回一个类似
[​​]而不是单个元素

这导致每次操作都必须编写
$('#test')[0]
,而不仅仅是
$('#test')
。你知道为什么吗


Jquery不会返回HtmleElement,它返回一个Jquery对象

jQuery对象包含一个集合 文档对象模型(DOM)的定义 从中创建的元素 一个HTML字符串或从 因为jQuery方法经常 使用CSS选择器匹配元素 从文档中,元素集 在jQuery中,对象通常称为 “匹配元素”或“选定元素”的集合 元素”

jQuery对象本身的行为非常复杂 像一个数组;它有一个长度 属性和 对象可以通过其 数值索引[0]到[length-1]。 请注意,jQuery对象不是 实际上是一个Javascript数组对象,所以 它并没有一个系统的所有方法 true数组对象,如join()。

这是组合设计模式的一个示例


复合模式描述了一组对象,这些对象可以用与对象的单个实例相同的方式处理。实现此模式允许您以统一的方式处理单个对象和组合。在jQuery中,当我们访问单个DOM元素或一组DOM元素或对其执行操作时,我们可以以统一的方式吃掉这两个元素。

由于ID不是唯一的,jQuery会查找具有此类ID的每个元素。因此它总是返回一个列表,因为不能保证元素正好是一个。

jQuery封装了基于多种原因找到的任何对象。例如,它确保无论如何都不会返回null。相反,找到的元素被插入到一个列表中。事实上,即使搜索单个元素,机制始终保持不变,因此结果将被放入一个元素数组中,而不是元素本身。

在jQuery中,最好将选择器视为匹配多个项,并且如果您使用each语法来迭代匹配项,那么解决方案将是最好的

$('#test').each(function() { 
  console.log($(this));
});

您想要检索什么?在
之间的数据?当您询问发生这种情况的原因(而不是如何避免)并得到回答时,它可以对此进行注释:您可以尝试
document.getElementById('test')
这完全不正确。每个DOM元素的ID必须唯一,否则文档无效。以下内容来自jQuery文档():每个id值在文档中只能使用一次。如果有多个元素被分配了相同的id,则使用该id的查询将只选择DOM中第一个匹配的元素。但是,不应依赖此行为;具有多个元素且使用相同id的文档无效