JQuery data方法的使用-遁地龙卷风

    技术2023-05-21  98

    (-1)说明

    我用的是chrome49,这个方法涉及到JQuery版本问题,我手里有3.0的,有1.9.1,后面将1.9.1及其以前的称为低版本,3.0称为高版本

    测试例子用到的showMessage方法如下

    showMessage.i = 0; function showMessage(object) {   var body = $("body")[0];   var $p =$("#debugp");   if($p.length==0)   {     $p = $("<p/>").attr("id","debugp");     $(body).prepend($p);   }   $p[0].innerHTML += "<br/>"+(showAttribute.i++)+" | "+object; }

      

    (0)$.data(obj,key,value)

    key值为字符串类型,为数字、对象(var lol={}),是没有意义的,value值可以为普通类型,当为引用类型时传递的是引用而不是克隆

    a.

      var obj = {"name":"寒冰射手","age":"12"};   $.data(obj,"height",165);   showMessage($.data(obj,"height"));

      $.data实际将数据放在了对象属性上,类似于obj.sex="女",无论你通过$.data添加几个key给obj,在obj只会多出一个类似于jQuery300082932543555993442

      300082932543555993442是jQuery产生的随机数,它指向一个对象,对象里面通过key-value的形式存储着你添加的数据

      低版本可以通过for-in遍历出jQuery300082932543555993442,高版本只能通过debug工具查看了

    b.

      当value是一个对象时,传递的是引用

      var husband = ["蛮族之王"];   var obj = {"name":"寒冰射手","age":"12"};   $.data(obj,"husband",husband);   $.data(obj,husband)[0] = "遁地龙卷风";   showMessage($.data(obj,husband));//输出   遁地龙卷风

    (2)$(selector).data(key,value)

    $("#lol").data("name","寒冰射手");

    showMessage($("#lol").data("name"));

    $(selector).data将数据绑定在HTML DOM元素上,剩下的特性与$.data方法一样,不过可以通过for-in得到添加的对象

     

    Processed: 0.010, SQL: 9