this的指向
- jQuery中,this指向的是原生的DOM元素element
获取JQ对象
jQ中获取的元素是一个集合,直接操作一般默认为第一个
jQ中查找元素时,没有找到的不会报错,只是不执行,这样就不会影响后边代码的执行,但同时也不方便调试
get()获取的也是DOM元素,因为jq中没有获取内容的高等操作,所以我们可以用get来进行jq对象转DOM对象,从而达到jq中没有的方法以原生的js方法来实现和获取想要的效果
$('div').get(0)==document.getElementsByTagName('div')[0]; //true
其他注意事项
当属性值有空格时,我们必须加上引号,否则会报错!
jQ中,设置属性是可以用链式操作的,但取值不能,最多只能是最后一个是取值的,一但取值,链式操作就应当停止
利用show()、hide()来显示隐藏可以智能判断元素的display,并且隐藏下也能获取到它的样式值
对于节点的操作,我们可以传入一个选择器字符串参数来进行筛选
jq中return是退出本次循环,退出整个循环则需要return false
position() 是计算的margin的顶点到父级定位元素的距离, 其他跟位置相关的函数或属性都是以border的顶点为参考点的
通过加点的方式我们可以给事件进行命名,叫做事件的命名空间,这样我们就可以在清除事件时指定我们想要指定清除的事件了,但是要记住一点,那就是记得要带上点
animate是一个异步函数,animate函数的作用只是将运动加入到运动队列中,我们可以理解为一个运动的数组,当一个运动完成才执行下一个运动,不会阻塞后面代码的执行
一些个工具方法
- $.type()
- 比原生typeof更强大
console.log( $.type('aa') )//"string" console.log( $.type(11) )//"number" console.log( $.type(false) )//"boolean" console.log( $.type(function(){}) )//"function" console.log( $.type({}) )//"object" console.log( $.type([]) )//"array" console.log( $.type(new Date()) );//"date"
- $.isFunction()
- $.isNumeric()
- $.isArray()
- $.isWindow()
- $.isEmptyObject()
- 判断是否为空对象, 也可以判断空数组
console.log($.isEmptyObject({}) )//true
console.log($.isEmptyObject({name: 11}) )//false
console.log($.isEmptyObject([]) );//true
- $.isPlainObject()
- 测试对象是否是纯粹的对象(通过 "{}" 或者 "new Object" 创建的)
var obj1 = {};
var obj2 = {name: 1};
var obj3 = [];
var obj4 = new Date();
console.log( $.isPlainObject(obj1) );//true
console.log( $.isPlainObject(obj2) );//true
console.log( $.isPlainObject(obj3) );//false
console.log( $.isPlainObject(obj4) );//false
- $.extend()
- 对象的拷贝
1.浅拷贝var obj1 = {name: 'hello'}; var obj2 = {}; $.extend(obj2, obj1); obj2.name = 'Hi'; console.log(obj1.name);//hello
2.深拷贝---对象的值为对象时,改变后仍不会影响原来的值,这时,只需将第一个参数设为true就可以了
```js
var obj1 = {
name: {
first: 'hello'
}
};
var obj2 = {};
$.extend(true, obj2, obj1);
obj2.name.first = 'Hi';
console.log(obj1.name.first);//hello
- 合并对象
将多个对象合并到第一个对象,后面的属性前面有则会覆盖var obj1 = {}; var obj2 = {name: 1}; var obj3 = {age: 2}; $.extend(obj1, obj2, obj3); console.log(obj1);//{name: 1, age:2}
var obj1 = {};
var obj2 = {name: 1};
var obj3 = {name:2,age: 2};
$.extend(obj1, obj2, obj3);
console.log(obj1);//{name: 2, age:2}