$(xxx).eq(0) 和 $(xxx)[0] 的区别是?

$(xxx).eq(0) 和 $(xxx)[0] 的区别是?

下面是下载的源码(即课程里讲的代码)

var imgWidth = $(".innerwraper img:first-child").eq(0).width();

我用上面的写法测试出来的 .inner 的left值始终是0px;

console.log(imgWidth); 的结果是这样的:

ƒ ( margin, value ) {
var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
…

把代码改成下面这样运行成功了, console.log(imgWidth); 的结果是640

var imgWidth = $('.innerwrapper img:first-child')[0].width;
或者
var imgWidth = $('.innerwrapper img:first-child').eq(0)[0].width;

不明白这是为什么……

源码本身的index.html是可以实现轮播效果, console.log(imgWidth); 也是640, 但用到我的.html文件里就不行……


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

你好,

$(xxx).eq(0) 获取的是jq对象,$(xxx)[0] 获取的js对象,jq对象转化成了js对象

例如:

http://img1.sycdn.imooc.com//climg/5cda8ec2000155a305320157.jpg

结果:

http://img1.sycdn.imooc.com//climg/5cda8ec90001404d07450067.jpg

width()是jquery中的方法,前面跟着的是jq对象,如果是js对象是获取不了的,两种不能混用。

offsetWidth是js中获取宽度的方法。

例如:

http://img1.sycdn.imooc.com//climg/5cda8f1c0001443206260553.jpg

自己可以测试下,然后对比着自己写的代码,看看是否出现混用的问题。

祝学习愉快!

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
响应式开发与常用框架 2018
  • 参与学习           人
  • 提交作业       2198    份
  • 解答问题       5012    个

如果你有web端基础,既想进阶,又想进军移动端开发,那就来吧,我们专题为你带来的课程有HTML5、CSS3、移动基础、响应式、bootstrap、less等,让你在前端道路上畅通无阻!

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师