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

时间:2011-02-28 10:41:41

标签: javascript jquery jquery-selectors

我使用以下代码遇到了jquery和selectors问题:

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

这总是返回类似[<div id=​"test">​</div>​]的列表,而不是单个元素。

这导致总是必须为每个操作而不是$('#test')[0]编写$('#test')。有什么想法吗?

此致

4 个答案:

答案 0 :(得分:8)

Jquery不会返回HtmlElement,它会返回一个jQuery对象。

  

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

     

jQuery对象本身表现很多   像一个数组;它有一个长度   财产和财产中的要素   对象可以通过他们的访问   数字索引[0]到[length-1]。   请注意,jQuery对象不是   实际上是一个Javascript Array对象,所以   它没有a的所有方法   true数组对象,例如join()。   http://api.jquery.com/Types/#jQuery

这是复合设计模式

的示例

复合模式描述了一组对象,可以像对象的单个实例一样对待它们。实现此模式允许您以统一的方式处理单个对象和组合。在jQuery中,当我们在单个DOM元素或一组DOM元素上访问或执行操作时,我们可以以统一的方式处理它们。 http://www.addyosmani.com/resources/essentialjsdesignpatterns/book/#designpatternsjquery

答案 1 :(得分:0)

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

答案 2 :(得分:0)

在jQuery中,最好将选择器视为匹配多个项目,如果您使用每种语法迭代匹配项目,那么您的解决方案将是最佳的...

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

答案 3 :(得分:-3)

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