jQuery使用属性数据创建数组并检查(true / false)

时间:2015-11-19 09:51:47

标签: jquery arrays checkbox checked

我应该创建函数,使用此标记

<ul id="#list">
  <li data-id="22"><input type="checkbox" data-id="22" checked></li>
  <li data-id="32"><input type="checkbox" data-id="32"></li>
  <li data-id="56"><input type="checkbox" data-id="56"></li>
  <li data-id="43"><input type="checkbox" data-id="43" checked></li>
</ul>

返回我data-id:选中复选框的true / false

object: Array
22:true
32:false
56:false
43:true

我有这个功能

function () {
            return $('#list')
                .find('li')
                .map(function (i, el) {
                    return $(el).data('categoryid');
                })
                .get();
}

返回i:data-id(但li的data-id) 我该如何修改此代码?

4 个答案:

答案 0 :(得分:0)

首先ul ID应该是list而不是#list

然后做

var obj = {};
$("#list").each(function(){
   obj[$(this).data("id")]=this.checked;
});

console.log(obj);

答案 1 :(得分:0)

您不必在元素的标记ID中添加#

<ul id="list"><!-- remove # -->

然后你可以尝试这样的事情:

var arr = [];

$('#list :checkbox').each(function(i, el){ 
  arr[i] = $(el).data('id') + ' : '+this.checked; 
});

$('pre').html(JSON.stringify(arr));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="list">
  <li data-id="22">
    <input type="checkbox" data-id="22" checked>
  </li>
  <li data-id="32">
    <input type="checkbox" data-id="32">
  </li>
  <li data-id="56">
    <input type="checkbox" data-id="56">
  </li>
  <li data-id="43">
    <input type="checkbox" data-id="43" checked>
  </li>
</ul>

<pre></pre>

答案 2 :(得分:0)

谢谢

这是我的代码基于此

        var a = {};
        var functionList = function(i, el) { 
            a[$(el).data('id')] = this.checked; };
        $('#list :checkbox').each(functionList);
        return a;

答案 3 :(得分:0)

您可以使用以下代码来获得预期结果。

$(document).ready(function(){
var arr =  $('li').map(function() 
{ 
 return ($(this).data("id") + ":" + ($(this).children().is(":checked")))
})
.get();
console.log(arr)
});