首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jquery中$('selector')和$('selector')[0]之间的差异

jquery中$('selector')和$('selector')[0]之间的差异
EN

Stack Overflow用户
提问于 2017-01-24 13:18:00
回答 1查看 1.9K关注 0票数 4

假设我有一个<div class="test" style="width:200px"></div>,请考虑以下几点:

代码语言:javascript
复制
var m = $('.test')[0];
var $md = $(m);
console.log($md.width()); //200

var o = $('.test');
console.log(o.width());  // 200


console.log(m);   // <div class="test" style="width:200px">
console.log($md);  // Object{ context: <div.test> ..... } 
console.log(o);   // Object{ length:1 , ..... }

基本上,我可以将width方法应用于var $mdvar o,那么如果输出相同,那么第一和第二种方法有什么区别呢?

我看到mdo都是对象,但是在控制台输出中它们并不完全相同,它们有什么区别?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-24 13:28:18

在这里,您获得了第一个匹配的选择器,它返回普通的js实例。

代码语言:javascript
复制
var m = $('.test')[0]; 

在这里,您将它再次包装在一个jQuery对象中。

代码语言:javascript
复制
var $md = $(m);

由于宽度()方法返回集合中第一个元素的宽度,所以方法之间没有区别,直到页面上有了多个.test元素,并且希望这样修改它们:

代码语言:javascript
复制
 $('.test').width(100)

此代码将页面上的每个.test元素的宽度设置为100 to。

但是,这将继续只更改集合中的第一个匹配元素:

代码语言:javascript
复制
 var el = $('.test')[0];
 $(el).width(100);

有一些基于您的代码的合成示例,我认为最好这样写:

代码语言:javascript
复制
$('.test').first().width(100);

代码语言:javascript
复制
$('.this:first').width(100);
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41829233

复制
相关文章

相似问题

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