javascript - jquery的实例对象调用方法时, this和$(this)有什么区别?
黄舟
黄舟 2017-04-11 11:42:53
[JavaScript讨论组]

网上搜到的, 全是说jquery中的this和$(this). 我的问题是,调用的方法已经是一个jquery对象了, 此时方法里的this和$(this)有什么区别. 具体看代码.


  
  

This is a test p

按照输出来看. 这两个都是jquery的实例对象, 而且看起来都指向了同一个对象, 但是又不相等. 用console.log()输出时看起来也只是个顺序的差别. 那么这两个对象到底是哪里存在差异呢?
按照我的理解,jquery构造函数, 可以接受选择器或者JS的DOM节点做参数, 生成一个jquery的实例对象, 但是当传入的参数本身就是一个jquery的实例对象的时候, 虽然不会报错, 但是生成的实例就不是传入的这个实例对象本身. 比如:

$(function(){
  $("button").click(function(){
    var t = document.getElementById("test");
    $(t).hide();//成功隐藏
    var d = $("#test");
    $(d).hide();//能隐藏
  });
});

上一个例子中, 显然this是指向了一个jquery的实例对象
新手初步刚刚接触jquery, 概念不清, 望指教.

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(1)
高洛峰

第一个问题基本没区别 只有context可能变

https://github.com/jquery/jquery/blob/2.2-stable/src/core/init.js#L103-L106

$(this)的实现

        // HANDLE: $(DOMElement)
            this.context = this[ 0 ] = selector;
            this.length = 1;
            return this;

第二问题时因为你写错了...
var d = $("#test");//这个是ID选择器...

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号