欢迎加入QQ讨论群258996829
麦子学院 头像
苹果6袋
6
麦子学院

Jquery学习之新特性详解

发布时间:2017-09-20 23:09  回复:0  查看:2507   最后回复:2017-09-20 23:09  
本文和大家分享的主要是jquery 中的一些新特性,一起来看看吧,希望对大家 学习jquery有所帮助。
  $(document).on
  从jQuery1.7 开始, jQuery 引入了  全新的事件绑定机制  on() off() 两个函数统一处理事件绑定。因为在此之前有 bind(), live(), delegate() 等方法来处理事件绑定, jQuery 从性能优化以及方式统一方面考虑决定推出新的函数来统一事件绑定方法并且替换掉以前的方法。
  jQuery 推出 on() 的目的有 2 个,  一是为了统一接口,二是为了提高性能  ,所以从现在开始用on() 替换 bind(), live(),  delegate 吧。尤其是不要再用 live() 了,因为它已经处于不推荐使用列表了,随时会被干掉。如果只绑定一次事件,那接着用 one() 吧,这个没有变化。
  jquery 中用 on 来绑定事件,经常的写法有
   $(document).on('click','#idname',function(){});
   $('#idname').on('click',function(){});
  这两种写法又有什么不同呢?
  $(document).on 是把事件委托到了 document 上。 $('#idname').on 是把事件委托到了元素上。
  在需要为较多的元素绑定事件的时候,优先考虑事件委托,可以带来性能上的好处。
  当事件冒泡到document 对象时,检测事件的 target ,如果与传入的选择符(这里是 button )匹配,就触发事件,否则不触发。
  在确保所选择的元素已经存在的情况下,进行事件绑定时,您可以使用委派的事件,以避免频繁的绑定事件及解除绑定事件。
  $(document).on 是把事件委托到 document 上, $('className').on 是把事件绑定到 .className 元素上。 效率方面,直接绑定在元素上会更为高效,绑定在 document 上,每次 document 有点击动作,浏览器都会判断当前点击的对象,如果匹配,再决定要不要执行,多了一个判断的环节 。但在目前开发中, JS 渲染效率很高,所以此异同基本可以忽略不计。此外,针对 $(document).on 的触发特点,延伸一下,  $("className").on onclick 绑定,只有在页面 onload 的时候执行一次,当页面刷新后,新加载的具有 className 的元素便没有事件绑定到上面了,相反 $(document).on 这种方法会刷新和重新赋予绑定操作 ,所以一定程度上更为全面。
  示例:
  // 绑定加载更多事件
  $(document).on('click', '.vCommit',  function (e) {
  e.preventDefault();
  saveTopic();
  });
   http://www.jquerycn.cn/a_5346
  document.querySelector
  现在所有的浏览器厂商都提供了 querySelector  和  querySelectorAll  这两个方法的支持,甚至就连微软也派出了  IE 8  作为支持这一特性的代表,  querySelector    querySelectorAll  作为查找 DOM  的又一途径,极大地方便了开发者,使用它们,你可以像使用  CSS  选择器一样快速地查找到你需要的节点。
  假如我们有一个 id  为  test  的  DIV ,为了获取到这个元素,你也许会像下面这样:
  document.getElementById("test");
  现在我们来试试使用新方法来获取这个 DIV
  document.querySelector("#test");
  document.querySelectorAll("#test")[0];
  感觉区别不大是吧,但如果是稍微复杂点的情况,原始的方法将变得非常麻烦,这时候 querySelector  querySelectorAll  的优势就发挥出来了。比如接下来这个例子,我们将在  document  中选取  class  为  test  的  div  的子元素  的第一个子元素,当然这很拗口,但是用本文的新方法来选择这个元素,比用言语来描述它还要简单。
  document.querySelector("div.test>p:first-child");
  document.querySelectorAll("div.test>p:first-child")[0];
  querySelector  和  querySelectorAll  的区别在于  querySelector  用来获取一个元素,而 querySelectorAll  可以获取多个元素。 querySelector  将返回匹配到的第一个元素,如果没有匹配的元素则返回  Null querySelectorAll  返回一个包含匹配到的元素的数组,如果没有匹配的元素则返回的数组为空。
来源:网络
您还未登录,请先登录

热门帖子

最新帖子