1

我正在使用 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/

4

2 回答 2

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/

于 2012-08-24T18:57:43.807 回答
2

为什么不这样,并将它们放在一个数组中?

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

祝你好运

于 2012-08-24T19:03:48.337 回答