您的位置:时时彩走势图 > 重庆时时五星彩走势图-服务器运维 > 即当使用.data()获取值时

即当使用.data()获取值时

2020-03-31 01:02

前段时间同事在群里对jQuery里的.data 15:11:34 alert;//123 data方法不靠谱 XXX 15:13:17 老老实实用attr吧细研究了下jQuery文档对.data()方法的描述: 复制代码 代码如下: As of jQuery 1.4.3 HTML 5 data- attributes will be automatically pulled in to jQuery's data object. The treatment of attributes with embedded dashes was changed in jQuery 1.6 to conform to the W3C HTML5 specification. 针对如下示便: 复制代码 代码如下:

$ === "page"; $.data === 43; $ === true; $.data.name === "John"; 即当使用.data()获取值时,jQuery会首先尝试将获取的字符串值转化成JS类型,包括布尔值,null,数字,对象,数组: 若值是”true|false”,则返回相应的布尔值; 若值是”null”,则返回null; 若值是纯数字构成的字符串,则返回相应的数字; 若值是由(?:{[sS]*}|[[sS]*])$,比如”{key:value}“或[1,2,3],则尝试使用jQuery.parseJSON解析之; 否则返回字符串值 当然文档里也特意说明了——如果就是想获取字符串值而不想获得自动转换的值,可以使用.attr来获取相应的值: 复制代码 代码如下: To retrieve the value's attribute as a string without any attempt to convert it, use the attr() method. 如下为jQuery源码 复制代码 代码如下: function dataAttr { // If nothing was found internally, try to fetch any // data from the HTML5 data-* attribute if ( data === undefined && elem.nodeType === 1 ) { // rmultiDash = //g var name = "data-" + key.replace.toLowerCase(); data = elem.getAttribute; if ( typeof data === "string" ) { try { /*.data方法尝试将获取的值转化成JS类型,包括布尔值,null,数字,对象,数组*/ data = data === "true" ? true : data === "false" ? false : data === "null" ? null : // Only convert to a number if it doesn't change the string +data + "" === data ? +data : /*rbrace = /(?:{[sS]*}|[[sS]*])$/,*/ rbrace.test ? jQuery.parseJSON : data; } catch {} // Make sure we set the data so it isn't changed later jQuery.data; } else { data = undefined; } } return data; }

本文由时时彩走势图发布于重庆时时五星彩走势图-服务器运维,转载请注明出处:即当使用.data()获取值时

关键词: