今天从jquery1.7.1 升级至jquery 1.9.1,踩到两个坑,在此记录一下,方便其他朋友解决类似问题。
1、data() 在不存在节点时的差异:
取一个不存在节点的data值时,在1.7版本会返回undefined,而在1.9.1会返回unll。
假设页面上不存在id为none的节点,但有以下JS代码:
$('#none').data('anyKey'); 在1.9.1会返回null。
所以不要只用typeof $('none').data('anyKey') == 'undefined' 来判断该值。
2、$.parseJSON方法的差异:
假设后端有返回一空的JSON数据,并且他意外地只是一空字符串,当然这种字符串的可能性是非常小的,因为通常后端都会有方法处理成正常的JSON格式,如PHP的json_encode()函数。
但是总有意外的时候,你期望要解析的JSON字符串,仅仅是一空字符串。那么,在jquery1.9.1的$.parseJSON()将会出错。
$.parseJSON(''); //SyntaxError: JSON.parse: unexpected end of data
在jquery1.9.1之前不会报错,看来要把容错处理要留给用户来做了。
解决方法:
$.parseJSON('{}');
附jquery1.91的官方升级指引地址:http://jquery.com/upgrade-guide/1.9