【发布时间】:2017-06-09 07:31:36
【问题描述】:
假设我有一个<div class="test" style="width:200px"></div>,请考虑以下几点:
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 , ..... }
基本上我可以在var $md 或var o 上应用width 方法,那么如果输出相同,第一种和第二种方法有什么区别?
我看到md 和o 是对象,但在控制台输出中它们并不完全相同,它们有何不同?谢谢。
【问题讨论】:
-
$('selector')为您提供匹配元素的数组,$('selector')[0]将为您提供数组中的第一个元素 -
一个是 DOM 对象,另一个不是,但使用
$()您也将其转换为 DOM 对象,这样它们就会相同 -
@Curiousdev
$('selector')返回的不是数组,而是类数组对象 -
@Curiousdev 您的评论具有误导性。正如 Curious 所指出的,它返回第一个匹配元素的 DOM 对象,而不是集合中的第一个 jQuery 对象。如果您想要集合中的第一个 jQuery 对象,请使用
$('selector').eq(0); -
@Curious 你可能是对的,这是一个非常有争议的话题,尽管 $('selector') 所做的只是在 DOM 中搜索与提供的选择器匹配的任何元素并创建一个新的 jQuery 对象可能是你是对的..
标签: javascript jquery html object dom