大家都知道$(‘’).data()能获取或操作DOM上的data-*属性值,但我在使用过程中并不止一次发现有时候data()方法是无法获取属性值(undefine)或获取不正确的,而使用attr()方法就能正常使用。所以大家在使用data()无效时,就只能改用attr()吧。
这里我们看下data和attr的工作过程,可能能找出原因:
|
|
没错,这段代码输出的是'123',再看看下面这段,估计就清楚多了:
即当使用.data()获取值时,jQuery会首先尝试将获取的字符串值转化成JS类型,包括布尔值,null,数字,对象,数组:
若值是”true|false”,则返回相应的布尔值;
若值是”null”,则返回null;
若值是纯数字构成的字符串(+data + “” === data),则返回相应的数字(+data);
若值是由(?:{[\s\S]}|[[\s\S]])$,比如”{key:value}”或[1,2,3],则尝试使用jQuery.parseJSON解析之;如果就是想获取字符串值而不想获得自动转换的值,可以使用.attr("data-"+key)来获取相应的值。
欢迎大家转载,请注明出处:
Doterlin's Blog https://doterlin.github.io/blog/2016/03/31/data/