jQuery如何从html标签属性构建json对象

时间:2016-11-18 03:13:36

标签: jquery json

我有一张桌子,每行都会添加一些属性,以后我点击jQuery的行时需要这些属性。

以下是<tr>元素的示例:

<tr data-id="1" data-employeeid="4" data-acceess="none" data-area="HR">
   <td class="sorting_1" tabindex="0">ID 01</td>
   <td>This is a custom descriptiion</td>                                                   
</tr>

我想基于json属性构建data.*对象,但也要添加列值。

所以在这个例子中我想得到这样的东西:

{'employeeid':'4', 'access':'none', 'area':'HR', 'data1':'ID 01', 'data2':'This is a custom description'}
  

有任何线索吗?

1 个答案:

答案 0 :(得分:1)

如果您使用有效的数据属性

<tr data-id="1" data-employeeid="4" data-acceess="none" data-area="HR">

您只需要$(element).data()将所有这些作为对象 如果您还要添加所有子元素中的文本,则可以扩展该对象

&#13;
&#13;
var tr   = $('tr[data-id="1"]');
var data = tr.data();

$.extend(data, $('td',tr).toArray().reduce(function(a,b,i) {
	a['data' + (i+1)] = $(b).text();
    return a;
}, {}));

console.log(data)
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
    <tr data-id="1" data-employeeid="4" data-acceess="none" data-area="HR">
        <td class="sorting_1" tabindex="0">ID 01</td>
        <td>This is a custom descriptiion</td>
    </tr>
</table>
&#13;
&#13;
&#13;