学习Jquery的时候,遇到一个问题:
$(function() {
console.info("this2:" + this);
$(".div").on("mouseover", function(){
console.info("(this)3: " + this);
console.info("$(this)3: " + $(this));
$(this).css("background-color", "#FFA500");
})
});
这里希望为div添加一个鼠标移动上去变色的事件。
刚开始没有区分开this在js中和jquery中的区别
把$(this).css("background-color", "#FFA500");写成了this.css("background-color", "#FFA500");
后来调试的时候,发现提示error说this没有这个css方法,百度后才发现:
原来css是jquery的方法,而this是原生态js中的关键字,指向调用this代码段的对象,
即:看它执行的时候是谁调用的,上述中看出this其实html元素标签<div>对象调用的。
这里说下$(this)和this的区别:
我们知道jquery是将js进行包装,用来解决不同浏览器之间js代码的调用,而将js中的dom对象转换为jquery对象
是通过$来实现。并且在jquery中是无法实现dom对象中的任何方法的。
.jQuery对象和DOM对象的互相转换
在上面第一点说了,jquery对象和dom对象是不一样的!比如jquery对象不能使用dom的方法,dom对象不能使用jquery方法,那假如我 jquery没有封装我要的方法,那能怎么办呢? 这时我们可以将jquer对象转换成dom对象 jquery对象转换成 dom对象 jquery提供了两种方法将一个jquery对象转换成一个dom对象,即[index]和get(index)。可能有人会觉得奇怪,怎么是用下标呢,没错,jquery对象就是一个数组对象. 下面代码将演示一个jquery对象转换成dom对象,再使用dom对象的方法 复制代码 代码如下: var $cr=$("#cr"); //jquery对象 var cr = $cr[0]; //dom对象 也可写成 var cr=$cr.get(0); alert(cr.checked); //检测这个checkbox是否给选中 dom对象转换成jquery对象 对于一个dom对象,只需要用$()把dom对象包装起来,就可以获得一个jquery对象了,方法为$(dom对象); 复制代码 代码如下: var cr=document.getElementById("cr"); //dom对象 var $cr = $(cr); //转换成jquery对象 转换后可以任意使用jquery中的方法了.
ps: 平时用到的jquery对象都是通过$()函数制造出来的,$()函数就是一个jquery对象的制造工厂. 建议:如果获取的对象是 jquery对象,那么在变量前面加上$,这样方便容易识别出哪些是jquery对象,例如: var $variable = jquery对象; 如果获取的是dom对象,则定义如下: var variable = dom对象