2016-11-18 73 views
0

我有一張表格,並且在每行添加了一些屬性,稍後我需要獲取這些屬性,當我單擊jQuery的行時。jQuery如何從html標記屬性中構建json對象

這裏是一個<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> 

我想建立一個基於data.*屬性還要加入該列值的json對象。

因此,在這個例子中,我希望得到的東西是這樣的:

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

任何線索?

+0

這是完全無效的,它應該是'數據access'等 – adeneo

+0

@ adeneo你是什麼意思?感謝你的反饋 – VAAA

+0

你不應該有屬性與週期在其中,你應該使用數據屬性,如在連字符 – adeneo

回答

1

如果您使用有效的數據屬性

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

所有你需要的是$(element).data()讓所有的人作爲對象。
如果你想文本從所有的子元素添加爲好,你可以擴展該對象

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

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

 
console.log(data)
<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>

+0

我只能說:真棒,謝謝 – VAAA