关于$.data(element,key,value)与ele.data.(key,value)的区别
<!doctype html> <html> <head> <meta charset="utf-8"> <title>测试代码</title> <script src="../jQuery.js"></script> </head> <body> <div >test1</div> <div >test2</div> </body> <script> var a=$("div"); var b=$("div");//a不等于b。 $("#test1").click(function(){ //首先使用data(key,value)用法。 $(a).data("a","1");//分别在a和b上保存Key一样的数据, $(b).data("a","2");// 看它是否会覆盖前面的,虽然是保存在不同对象上。 alert($(a).data("a"));//你猜到答案了吗,这里输出的是2;是不是有点意外? alert($(b).data("a"));//这里也是2; alert("a是否等于b"); alert(a===b); //false }); //使用jQuery.data(element,key,value)来存放数据。 $("#test2").click(function(){ $.data(a,"b","3");//分别在a和b上保存Key一样的数据, $.data(b,"b","4");// 看它是否会覆盖前面的,虽然是保存在不同对象上。 alert($.data(a,"b"));//应该你能猜答案吧,输出3 alert($.data(b,"b"));//这输出4 }) ; </script> </html>
这里我个人是按指针理解的,data(key,value)时,a与b公用指针“a”,指向同一数据,所以会覆盖。而data(element,key,value)时,虽然指针名是一样的,但分别隶属于a与b,是两个不同的指针,指向2个数据,所以单独存在,互不影响。