如何遍历jQuery元素数组并访问数据?

时间:2012-08-24 18:55:21

标签: jquery

我正在使用jQuery 1.7.2。

我有三个复选框,每个复选框都有一个唯一的公司ID。选中一个框后,我想列出从已检查的框中创建的公司ID列表。

<input type='checkbox' class='Company' data-companyid='1'> 1<br>
<input type='checkbox' class='Company' data-companyid='2'> 2<br>
<input type='checkbox' class='Company' data-companyid='3'> 3<br>

// SET BY CLASS
$Company = $("input.Company");

// GET COMPANY LIST 
function getCompanyList() {
    var len = $Company.length;
    for (i = 0; i < len; i++) {
         var CompanyID = $Company[i].data("companyid");
         alert(CompanyID);
    }
}
$Company.change(getCompanyList);​

出于某种原因,我无法通过循环中的数据方法访问公司ID。我有很多我自己的代码示例,我做这种事情,但我不能让这个工作。

我错过了什么?

http://jsfiddle.net/Msc95/

2 个答案:

答案 0 :(得分:2)

您不会将各个公司ID累积到任何类型的数据结构中。

从(已检查)元素数组返回值数组的最简单方法是使用jQuery的.map函数:

function getCompanyList() {
    var companyList = $Company.filter(':checked').map(function() {
       return $(this).data('companyid');
    }).get();
    alert(companyList);
}

.get()调用是将.map()的结果转换为普通数组所必需的。

请参阅http://jsfiddle.net/alnitak/zfUXj/

答案 1 :(得分:2)

为什么不这样的东西,把它们放在一个数组中?

var checkedCompanys = new Array();
 $('input.company:checked').each(function() {
     checkedCompanys.push($(this).data("companyid"));    
  });
祝你好运