jquery升级之坑

js从1.7.2升级到1.11.3
  1. live函数被弃用了,在新版本中建议用on,他们接口如下:
$(selector).live('click', function(){/* some code */});
$(selector).on('click', [selector,] function(){/* some code */});
       初看之下,中括号里的参数是可以省略掉的,两函数不是一模一样了么,于是天真的使用了全局替换,这个好简单的,结果一测试,有些地方可以,有些地方不生效,于是仔细看了下两者的区别,发现如果元素是一开始页面就有的,就能生效;如果是后台动态添加的就不生效,事实上,live是将$(selector)代理到了document元素上,这个元素是始终存在的,正确的替换方式如下:
$(document).on('click', selector, function(){/* some code */});
  1. die被off替代了
  2. 使用了被废弃的jQuery.brower属性
          在前端开发中我们常需要根据浏览器不同版本做不同的处理,jQuery.brower本来是通过浏览器的userAgent字段来提取浏览器相关信息。新版本中已经将其废弃,而是建议使用特征检测的方法去判断,并且给了一个Modernizr库为推荐,不过如果改成这样的成本有点大,可以考虑自己去实现,如下:
          
jQuery.browser={};(function(){jQuery.browser.msie=false; jQuery.browser.version=0;if(navigator.userAgent.match(/MSIE ([0-9]+)./)){ jQuery.browser.msie=true;jQuery.browser.version=RegExp.$1;}})();
 
  
  1. $(html)对格式有严格的要求,以下几种写法都是错误的:
          
(1). $(" <div>div>"); //错误,字符串最开头有一个空格,不是以小于号'<'开头的
(2). $(">div>world"); //不标准,html标签结束后后面还有多余的"test",它会被忽略
(3). $("# < div > div > ); //错误,以井号开头并且后面并不是一个css选择器

5. attr函数:自定义属性使用attr,标签自由value属性使用val
6. 表单的选中和不选中状态谁用prop函数
   $('input').prop('checked',true);//设置选中
   $('input').prop('checked',false);//设置不选中
   $('input').prop('checked');//返回true或者false
          

你可能感兴趣的:(jquery)