这为什么this,而不是$(this)?

这为什么this,而不是$(this)?

;(function($){

    //一个插件的写法

$.fn.color = function(option){


var options = $.extend({

col: "blue",

fz : "20px"

}, option);


this.css("color", options.col);

this.css("fontSize", options.fz);


return this;

}

})(Zepto);


正在回答

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

4回答

同学你好,因为同学写的例子里面,this指代的是dom元素:
http://img1.sycdn.imooc.com//climg/5e58766909e0d10304970136.jpg

控制台:

http://img1.sycdn.imooc.com//climg/5e58765e097d827907640072.jpg而addClass是jq的方法,this是dom元素,所以不能调用这个方法。

如果同学实在理解不了,可以先记住,或者不知道给使用哪个时,可以先在控制台输出一下。一般在插件中,因为调用插件的就是jq元素,所以可以直接使用this,别的地方就是要使用$(this)了。

如果我的回答帮助了你,欢迎采纳,祝学习愉快~

好帮手慕粉 2020-02-27 18:37:48

同学你好,可以使用$(this),如下:

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

color是我们自定义的一个函数,谁调用里面的this就指向谁,在这个函数里面。this指向的是调用者$("div")。

如果我的回答帮助了你,欢迎采纳,祝学习愉快~

  • 提问者 慕尼黑5122342 #1
    $("div").bind("click", function(){ $(this).addClass("ddd"); }) 这里面为什么必须使用$(this),使用this就会报错?
    2020-02-27 19:43:15
好帮手慕粉 2020-02-27 15:54:06

同学你好,很抱歉老师第一次没有理解同学的意思,回答的是不太正确的,老师已经做出了修正,同学可以再看下第一次的回答。

祝学习愉快!

好帮手慕粉 2020-02-27 09:46:38

同学你好,因为这是自己扩展的插件,是要调用的时候才能够执行的,当我们调用的时候,比如$("div").color(),调用的对象是$("div"),那么此时的this就是$("div"),就是jq对象了,我们可以打印出来看下:

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

控制台:

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

如果我的回答帮助了你,欢迎采纳,祝学习愉快~

  • 提问者 慕尼黑5122342 #1
    this不是指向DOM对象的吗?而$(this)指向jQuery对象?这里的this是指向谁?
    2020-02-27 12:51:26
  • 提问者 慕尼黑5122342 #2
    既然是指向jQuery对象,那为什么不使用$(this)?this不是都是指向DOM对象吗?
    2020-02-27 17:12:02
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
3.WebAPP开发与小程序
  • 参与学习           人
  • 提交作业       622    份
  • 解答问题       6815    个

微信带火了小程序,也让前端工程师有了更多的展现机会,本阶段带你从移动基础知识的学习到webAPP开发,及小程序开发,让你PC端与移动端两端通吃。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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