>>>>> jQuery中的一些注意事项

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}

你可能感兴趣的:(>>>>> jQuery中的一些注意事项)