`
argel_lj
  • 浏览: 361551 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jQuery中this与$(this)的区别

 
阅读更多

最近在使用jQuery的时候,发现有时候直接通过this来调用jquery所特有的方法或属性的时候会报错误:对象不支持此属性或方法。比如下面的程序,红色的代码段运行正常,蓝色的代码段运行报错。
<script type="text/javascript">
 $("img").each(function(i){
  this.src="img/slide-"+i+".jpg";
  });

 
 $("div").each(function(){
  this.toggleClass("box");
  });
</script>

于是用下面直接返回this和$(this)的方式测试了一下,

<script type="text/javascript">
$("#btn").bind("click",function(){
 alert(this);
 alert($(this));
 });
</script>

返回结果:

[object HTMLInputElement]

[object Object]

 
 

 可见,this,表示当前的上下文对象是一个html对象,可以调用html对象所拥有的属性,方法。$(this),代表的上下文对象是一个jquery的上下文对象,可以调用jquery的方法和属性值。

由此可见,上面红色代码.src本身就是html对象,所以可以写成this.src,蓝色代码.toggleClass是jQuery对象,所以写成this.toggleClass肯定会报错了,$(this).toggleClass才是正确的写法。


===================================================================

由于jquery对象本身是一个集合。所以如果jquery对象要转换为dom对象则必须取出其中的某一项,一般可通过索引取出。
如:$("#msg")[0],$("div").eq(1)[0],$("div").get()[1],$("td")[5]这些都是dom对象,可以使用dom中的方法,但不能再使用Jquery的方法。

=====================================================================

对于获取的元素集合,获取其中的某一项(通过索引指定)可以使用eq或get(n)方法或者索引号获取,要注意,eq返回的是jquery对象,而get(n)和索引返回的是dom元素对象。对于jquery对象只能使用jquery的方法,而dom对象只能使用dom的方法,如要获取第三个<div>元素的内容。有如下两种方法:

 

$("div").eq(2).html();             //调用jquery对象的方法
$("div").get(2).innerHTML;      //调用dom的方法属性

=========================================================================
集合处理功能
对于jquery返回的集合内容无需我们自己循环遍历并对每个对象分别做处理,jquery已经为我们提供的很方便的方法进行集合的处理。
包括两种形式:

$("p").each(function(i){this.style.color=['#f00','#0f0','#00f']})     
//为索引分别为0,1,2的p元素分别设定不同的字体颜色。
$("tr").each(function(i){this.style.backgroundColor=['#ccc','#fff'][i%2]})     
//实现表格的隔行换色效果
$("p").click(function(){.html())})             
//为每个p元素增加了click事件,单击某个p元素则弹出其内容

分享到:
评论

相关推荐

    实例讲解JQuery中this和$(this)区别

    主要介绍了实例讲解JQuery中this和$(this)的区别,this表示当前的上下文对象是一个html对象,可以调用html对象所拥有的属性和方法,$(this),代表的上下文对象是一个jquery的上下文对象,可以调用jquery的方法和属性值,...

    js原生态函数中使用jQuery中的 $(this)无效的解决方法.docx

    js原生态函数中使用jQuery中的$(this)无效的解决方法 在JavaScript开发中,使用jQuery的$(this)在原生态函数中可能会出现无效的问题,本文将对此进行详细的分析和解决方法的介绍。 一、问题描述 在JavaScript开发...

    浅谈jQuery this和$(this)的区别及获取$(this)子元素对象的方法

    1.JQuery this和$(this)的区别 相信很多刚接触JQuery的人,很多都会对$(this)和this的区别模糊不清,那么这两者有什么区别呢? 首先来看看JQuery中的 $() 这个符号,实际上这个符号在JQuery中相当于JQuery(),即$...

    详谈jQuery中的this和$(this)

    在JavaScript和jQuery的世界里,`this` 和 `$(this)` 是两个经常被提及的关键概念,它们在处理DOM操作和事件处理中扮演着重要的角色。理解它们的区别和应用场景对于编写高效、简洁的jQuery代码至关重要。 首先,`...

    jQuery中$this和$(this)的区别介绍(一看就懂)

    下面我将用简洁的语言详细讲解jQuery中$this和$(this)的区别,并通过一个具体的例子来加深理解。 首先,我们需要明确this关键字在JavaScript和jQuery中的含义。在JavaScript中,this关键字指的是当前函数的上下文...

    jQuery 中$(this).index与$.each的使用指南

    本文将对 jQuery 中的 $(this).index() 和 $.each 方法的使用进行详细介绍,并结合示例解释其在实际开发中的应用。 首先来看 $(this).index() 方法。在 jQuery 中,$(this) 常用于引用当前事件的元素对象,而 ....

    jQuery 选择方法及$(this)用法实例分析

    总结来说,jQuery的选择方法提供了丰富的选择DOM元素的方式,而`$(this)`则帮助我们在事件处理中定位到触发事件的元素,两者结合使用,能够实现精准且高效的DOM操作。对于任何前端开发者来说,掌握这些基本技能是必...

    浅谈jquery中的each方法$.each、this.each、$.fn.each

    jquery.each 方法 方法一 $("img").each(function(i... //$(this)==数组中的每一个数组(如果数组是对象,就是对象) }); 方法三 应有场景有点不一样 this.each(function(){ }) 扩展jQuery对象方法 应该是 j

    JQuery this 和 $(this) 的区别

    在JavaScript和JQuery中,`this` 和 `$(this)` 是两个不同的概念,它们在功能和用法上有所差异。了解这些差异对于编写高效的JQuery代码至关重要。 首先,`this` 是JavaScript中的一个关键字,它在不同的上下文中...

    js原生态函数中使用jQuery中的 $(this)无效的解决方法

    在JavaScript中,`$(this)` 是 jQuery 对象的一个常见用法,它通常代表当前上下文中的元素。然而,在某些情况下,特别是在涉及到异步操作,如 `setTimeout` 或 `$.ajax` 等函数内部,`this` 的指向会改变,不再指向...

    jQuery自定义添加”$”与解决”$”冲突的方法

    为了满足这些特殊需求,jQuery允许用户自定义添加方法到它的核心功能中,这就包括自定义添加"$"符号的方法。以下我们将详细探讨如何实现这一过程以及解决可能出现的"$"冲突问题。 1. **自定义添加 "$" 方法** 在...

    jquery $(this).attr $(this).val方法使用介绍

    在JavaScript的jQuery库中,`$(this)`是一个非常重要的对象,它代表当前上下文中的DOM元素。`$(this).attr()`和`$(this).val()`是两个常用的jQuery方法,用于处理DOM元素的属性(attributes)和值(values)。下面将...

    vue基本环境+jquery ajax应用

    在Vue项目中,你可以通过全局安装jQuery,然后在Vue组件内使用`this.$ajax`(需要在Vue原型链上挂载jQuery)或者在Vue实例的`beforeCreate`或`created`钩子中初始化jQuery并进行AJAX请求。 下面是一个使用jQuery ...

    jquery与js函数冲突的两种解决方法.docx

    在JavaScript的开发环境中,尤其是当使用多个库或框架时,比如jQuery和其他JavaScript库(如Prototype、MooTools等),可能会遇到函数名或选择器符号`$`的冲突问题。这是因为这些库都倾向于使用`$`作为主要的函数或...

    jQuery自定义添加"$"与解决"$"冲突的方法

    在日常的Web开发中,jQuery作为流行的JavaScript库,为我们提供了丰富便捷的DOM操作与事件处理功能。但是,有时候我们需要扩展jQuery库的功能来适应特殊的业务需求,这时就需要自定义添加“$”符号的方法,并解决...

Global site tag (gtag.js) - Google Analytics