如何在jQuery中将元素属性值提取到列表

时间:2015-08-14 09:20:42

标签: javascript jquery forms

我试图用jQuery提交一个复杂的表单。我想在AJAX请求中将值提交给服务器。

鉴于我从jQuery Datatable插件获得的<tr>值数组,如何轻松地将data-id值提取为适合提交到表单的格式,例如类似的东西:

{
  id: 65537, id: 32768, id: 65539
} 

我试过了:

> $(table.rows().nodes())
> [<tr role=​"row" class=​"odd" data-id=​"65537">​…​</tr>​, <tr role=​"row" class=​"even" data-id=​"32768">​…​</tr>​, <tr role=​"row" class=​"odd" data-id=​"65539">​…​</tr>​]
> $(table.rows().nodes()).length
3

获取data-id值需要什么代码?

更新了修改

实际上,我刚刚通过对代码进行硬编码来测试表单,我需要将其转换为这个0索引数组,显然是来自id字段的数字:

var formData = {"products[0]": 65537,
                        "products[1]": 65540};

谢谢。

2 个答案:

答案 0 :(得分:0)

好好循环浏览每个tr并将其data-id推送到key-value的唯一array

<强> DEMO

var rows=$(table.rows().nodes())
var values=[];
$.each($(rows),function(key,value){
    var vals ={}
    vals[key]=$(this).attr('data-id')//or values.push($(this).attr('data-id');
    values.push(vals);
});
console.log(values);
  

注意:您在问题中提到的id对象中不能包含重复键,因此最好使用一些唯一索引,您可以从key <{1}} $.each参数中获取该索引>

答案 1 :(得分:0)

使用此选项,数据变量将包含您想要的所有内容

$(function(){
  var data = [];
  $.each($('table.rows().nodes()'),function(k,v){
      data.push($(this).data('id'));
  });
  console.log(data);
})