我应该创建函数,使用此标记
<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) 我该如何修改此代码?
答案 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)
});