首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jquery将html元素转换为对象的原因是什么?

jquery将html元素转换为对象的原因是什么?
EN

Stack Overflow用户
提问于 2015-06-21 03:32:12
回答 3查看 136关注 0票数 0

我开始学习jquery,基本上jquery的很多方面都让我感兴趣。现在,我最近一直在用jquery编写小的代码片段,现在我已经很舒服了。

我有一个小小的好奇心,看看下面的代码:

代码语言:javascript
复制
<a href="#">Click here</a>

Jquery代码::

代码语言:javascript
复制
elem_jquery = $('a');

elem_js = $('a')[0];

console.log(elem_jquery);

console.log(elem_js);

现在,elem_jquery打印以下内容:

代码语言:javascript
复制
Object { 0: <a>, length: 1, prevObject: Object, context: HTMLDocument → jquery-object.html, selector: "a" }

elem js输出以下内容:

代码语言:javascript
复制
<a href="#">

我真正想知道的是,jquery是如何将

代码语言:javascript
复制
<a href="#">  

转到

代码语言:javascript
复制
 Object { 0: <a>, length: 1, prevObject: Object, context: HTMLDocument → jquery-object.html, selector: "a" }

这跟sizzle有关系吗?

EN

回答 3

Stack Overflow用户

发布于 2015-06-21 03:40:58

jQuery不会将html元素转换为对象。它所做的是获取对dom元素的引用,并将其包装在jQuery对象中。原始的dom元素仍然在jQuery对象中。

票数 3
EN

Stack Overflow用户

发布于 2015-06-21 03:42:08

Sizzle是jQuery中的选择器引擎;这意味着它允许jQuery根据.className#idName之类的字符串或element[attr='value']等更复杂的字符串来查找DOM元素。

因此,当您运行$(selector)时,jQuery使用sizzle查找与该查询匹配的所有DOM元素,然后将它们返回到一个jQuery对象中。(通常,这些DOM元素在JavaScript中表示为HTMLElement objects。这就是您在访问$(selector)[0]时所获得的。)

现在,您可以在jQuery对象上运行$(<css-selector>).html()$(<css-selector>).css()等函数,这反过来会影响包装的DOM元素,并且为了始终获得对包装的HTMLElement object的访问,jQuery提供了这些[<index>],如$(selector)[0]

票数 1
EN

Stack Overflow用户

发布于 2015-06-21 03:51:46

$('a')是一个选择器。jQuery获取它并查找所有anchor元素,然后返回一个对象及其结果。这就是为什么它的属性长度是1的原因,它只找到了一个。

通过执行$('a')[0],您可以告诉jQuery获取DOM元素本身。这等同于可读性更好的$('a').get(0)

但是如果使用$('a').first(),您将获得另一个代表锚DOM对象的jQuery对象。这样做的好处是可以做像$('a').first().attr('href')这样的事情--它返回href属性。

基本上,jQuery创建的对象可以做一些事情,让你的工作变得更容易,你的代码比纯粹丑陋的javascript更具可读性。

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

https://stackoverflow.com/questions/30958067

复制
相关文章

相似问题

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