A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© sjj632605 中级黑马   /  2019-1-16 16:04  /  506 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

原生js和jQuery主要异同点
1、入口函数的不同
  js:window.onload = function(){内部放js}   
  实质就是一个事件,拥有事件的三要素,事件源,事件,事件处理程序。等到所有内容,以及我们的外部图片之类的文件加载完了之后,才会去执行。只能写一个入口函数。
  jQuery:$(function(){})  或者  $(document).ready(function(){})
  是在 html所有标签都加载之后,就回去执行。可以写多个。
2、获取元素的方式不同
  js:常用的以下几个,除了id,其他的结果都是伪数组
[HTML] 纯文本查看 复制代码
document.getElementsByTagName("a")
    document.getElementById("demo")
    document.getElementsByClassName("class")  有兼容性问题
    document.getElementsByTagName("*")  获得所有的标签,用来遍历
  html5新增选择器
  document.querySelector(selector) 可以通过CSS选择器的语法找到DOM元素,返回
    第一个满足选择器条件的元素 一个dom对象
  document.querySelectorAll('.item');返回所有满足该条件的元素 一个元素类型是dom类
    型的数组
jQuery:
   $(" ")  通过和css雷同的选择器方式来获取元素。得到的是jquery对象(dom元素的数组,外加其他一些成员)
。即使写的是id,唯一的,得到的对象都不是单一的。
本质上jquery方式和qs方式都是获取DOM数组, 只不过jquery会多一些其他成员,
DOM数组的每一个成员注册事件不能像jquery一样直接注册, 必须分别给每个元素注册

3、DOM对象和jquery对象的相互转换 
  jQuery对象转换成DOM对象:
    方式一:$(“#btn”)[0]
    方式二:$(“#btn”).get(0)得到dom对象。   
    eq(0)得到jquery对象
  DOM对象转换成jQuery对象:
  $(document) -> 把DOM对象转成了jQuery对象
  var btn = document.getElementById(“btn”);
  btn -> $(btn);    $(this)
  Jquery得到的元素类型都是对象,内容是伪数组,无论是不是唯一的元素。
4、事件处理程序不同
[HTML] 纯文本查看 复制代码
js:
  document.getElementById(“id”).onclick = function(){ // 语句 }

  document.getElementById(“id”).addEventListener("click",function(){})
  onclick,onfoucs,onblur,fouce(自动获得),select(自动选择文本域内容),onmouseover,onmouseout,
  oninput/onpropertychange用户输入事件,onchange(下拉菜单select内容发生改变时发生事件,如果内容为几,那么做出什么反应)
  


  jquery
  $(“#id”).click(function(){     // 语句   });
5、设置类
  js:document.getElementById(“btn”).className = "wrong1 wrong2"
  可以同时设置多个类名。
  classList属性(是数组),方法add   remove  contains  toggle
  jquery:
6、设置value
7、设置内容,html和text
  js:document.getElementById(“btn”).innerHTML = "内容不能为空"
  可以是文本,可以是<p>内容不能为空</p>。
  jquery:
8、属性
  js:object.getAttribute(attribute)  获取元素属性
    object.setAttrbute(attribute,value)  设置元素属性

9、节点操作
  js:  childNodes属性   element.childNodes  所有子元素,包括元素节点,文本节点, 属性节点,甚至包括空格等,所以这个不怎么用。
      nodeType属性  node.nodeType返回结果是数字。1代表元素节点,2属性节点,3文本节点,
    以上这两个属性都不建议使用,建议直接使用children。
10、对数组的增删改查
  js:
    增:push()最后追加  返回新的长度。
      unshift ()  开头添加,返回新的长度。即操作后如果输出,结果是长度,不是新数组。
    删:pop()删除最后一个,并返回删掉的值,此方法无参数。
      shift()删除第一个元素,并返回删掉的值,无参数。
    连接数组:concat()  连接两个或多个。它不会改变现有的数组,而仅仅会返回被连接数组的一个副本
         aa.concat(bb);     结果:  [1,3,5,“a”,”b”,”c”];
    转换:join() 数组转字符串  arrayObject.join([separator])  ,返回新字符串,原数组不会有任何变化。
       split() 字符串转数组   返回新数组,原字符串没有变化
      stringObject.split(separator,howmany)    两个参数均是可选的,默认是逗号分隔,第二个指定数组最大长度。



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马