今天在二次开发的时候,看到源代码的新闻列表是Aajax获取的,点击新闻内容触发编辑,我没有看到新闻Id却能查到信息。
观看$.ajax遍历赋值过程中,$tr("<a>新闻内容</a>").data("data" , obj)绑定了此条新闻的JSOn数据,在编辑时候只要$.data("data") 就能获取到此数组
1.$data的基本语法
data([key],[value])
在元素上存放或读取数据,返回jQuery对象。
当参数只有一个key的时候,为读取该jQuery对象对应DOM中存储的key对应的值,值得注意的是,如果浏览器支持HTML5,同样可以读取该DOM中使用 data-[key] = [value] 所存储的值。参见最后一个示例。
当参数为两个时,为像该jQuery对象对应的DOM中存储key-value键值对的数据。
如果jQuery集合指向多个元素,那将在所有元素上设置对应数据。 这个函数不用建立一个新的expando,就能在一个元素上存放任何格式的数据,而不仅仅是字符串。
V1.4.3 新增用法, data(obj) 可传入key-value形式的数据。
2.$.data的实例子
2.1
在一个DIV上存放数据:<div><div>
Jquery代码;
$("div").data("blah"); // undefined $("div").data("blah", "hello"); // blah设置为hello $("div").data("blah"); // hello $("div").data("blah", 86); // 设置为86 $("div").data("blah"); // 86 $("div").removeData("blah"); //移除blah $("div").data("blah"); // undefined
2.2
在一个div上存取名/值对数据:<div><div>
Jquery代码;
$("div").data("test", { first: 16, last: "pizza!" }); $("div").data("test").first //16; $("div").data("test").last //pizza!;
3.我见过的
赋值:
$.each(data, function (n, obj) { console.log(obj); if (currentStatus == "mReg") { // fillReg(obj); $("#task-table").append("<tr class='mReg'><th></th><th>" + obj.t.time + "</th><th colspan='3'>" + obj.t.rate + "%</th><th colspan='2'>" + obj.t.worktime + " </th></tr>"); $.each(obj.lt, function (n, data) { // console.log(data); var tr = $("<tr><th>" + (n + 1) + "</th><th ><a href='#' onclick='editTask(this)'> " + data.content + "</a></th><th>" + data.rate + "</th><th> " + data.project + "</th><th> " + data.category + "</th><th>" + data.worktime + "</th><th>" + data.endTimeSta + "</th></tr>"); tr.find("a").data("data", data); //------------重点 $("#task-table").append(tr); }) } else { fillCou(obj); } });
编辑:
var editTask = function(sender) { var obj = $(sender).data("data"); //获取任务信息 currentId = obj.id; $('#content').val(obj.content); $('#project').val(obj.project); $('#category').val(obj.category); $("#worktime").val(obj.worktime); $("#endtime").val(obj.endtime); $("#rateO").val(obj.rate); $("#rateO").text(obj.rate+"%"); }