zoukankan      html  css  js  c++  java
  • jQuery中$(this)与this的区别

      经常在写jQuery的时候分不清this 和 $(this),为了方便起见尽量不用this,只用$(this)。但是今天在别人的代码的基础上改一些东西,又遇到了这个this,不得不把它弄明白。

      $(this)相当于jQuery(this),是一个jQuery对象,只能使用jQuery的属性和方法;而this中存放的是DOM元素,属于javascirpt中的DOM元素对象,要使用DOM元素对象的属性和方法。

      例如下面的写法是正确的:

    this.setAttribute('class','test');

         如果写成下面这样,就会报错:

    $(this).setAttribute('class','test');

      报错说undefined,也就是所$(this)没有被定义。因为setAttribute是DOM对象的方法,而不是jQuery对象的方法。同样,反过来使用也会报错。例如:

    this.attr('class','test');

      因为attr是jQuery设置属性值的方法,不能用在DOM元素对象上面,因此这样写会报错。这个时候应该用$(this):

    $(this).attr('class','test');

      其实可以通过alert查看$(this)与this的不同,alert($(this));弹出的结果是[object Object ],alert(this);弹出来的是[object HTMLImageElement]。这里的Object指的就是jQuery对象,HTMLImageElement 指的是html元素对象。

    $(this)与this的区别本质上是javascript对象与jQuery对象的区别。当然jQuery对象也可以转化为javascript对象。

    $(this)[0]==this;

      即这种jQuery对象可以通过加下标为0方式转化成javascript对象,相当于$(this).get(0) == this;用这种get(0)的方式获取到对象的DOM对象然后就可以使用相应的DOM方法。

  • 相关阅读:
    系统使用 aspose.cell , 使得ashx第一次访问会变很慢
    aspx页面生成html
    SQL Server 监控 使用sp_trace_create
    IE6 IE7: div中table宽度100%导致的宽度问题
    VSTO Word2003 添加菜单栏, 添加工具栏
    mysql主主同步的配置
    linux永久添加静态路由有两种方法
    centos 7 进入单用户系统并且更改所有系统文件
    rabbitmq-3.7.2编译安装全过程
    linux centos 升级 make 4.2
  • 原文地址:https://www.cnblogs.com/YuKiee/p/6763560.html
Copyright © 2011-2022 走看看