我希望得到像
这样的格式[{"1":"6"},{"1":"7"},{"2":"8"}] )
但是这段代码显示如下:
[{"cateid":"6"},{"cateid":"7"},{"cateid":"8"}] )
如何用整数值替换cateid
?
var seleusrv = [];
$('.catechk:checked').each(function(){
var cateid = $(this).val();
var i = 0;
$('.srvchk:checked').each(function(){
var srvcateid = $(this).data('cateid');
var srvid = $(this).val();
if (cateid == srvcateid) {
seleusrv.push({cateid: srvid});
}
});
if ($(this).closest('ul').find('.srvchk:checked').length == 0) {
seleusrv.push({cateid: ''});
}
});
seleusrv = JSON.stringify(seleusrv);
这是我的Html结构: -
<ul>
<li>
<input class="catechk collapse_allcheckbox" value="1" type="checkbox"> Air Conditioner
</li>
<li>
<input class="srvchk collapse_checkbox" value="6" data-cateid="1" type="checkbox"> AC Repair
</li>
<li>
<input class="srvchk collapse_checkbox" value="7" data-cateid="1" type="checkbox"> AC Gas Filling
</li>
</ul>
答案 0 :(得分:1)
您需要修改您的逻辑,如下所示: -
查看以下工作片段: -
$(document).ready(function(){
var seleusrv = [];
$('.catechk').each(function(){
var obj = $(this);
var cateid = $(this).val();
if (obj.closest('ul').find('.srvchk:checked').length == 0) {
var temp = {};
temp[cateid] = '';
seleusrv.push(temp);
}else{
obj.closest('ul').find('.srvchk:checked').each(function(){
var temp = {};
var catvalue = $(this).val();
temp[cateid] = catvalue;
seleusrv.push(temp);
});
}
});
seleusrv = JSON.stringify(seleusrv);
console.log(seleusrv);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
<li>
<input class="catechk collapse_allcheckbox" value="1" type="checkbox" checked> Air Conditioner
</li>
<li>
<input class="srvchk collapse_checkbox" value="6" data-cateid="1" type="checkbox" checked> AC Repair
</li>
<li>
<input class="srvchk collapse_checkbox" value="7" data-cateid="1" type="checkbox" checked> AC Gas Filling
</li>
</ul>
<ul>
<li>
<input class="catechk collapse_allcheckbox" value="2" type="checkbox" checked> Air Conditioner2
</li>
<li>
<input class="srvchk collapse_checkbox" value="8" data-cateid="1" type="checkbox"> AC Repair2
</li>
<li>
<input class="srvchk collapse_checkbox" value="9" data-cateid="1" type="checkbox"> AC Gas Filling2
</li>
</ul>
答案 1 :(得分:0)
如果您能够在程序中使用ES6,以下情况应该可以正常使用:
seleusrv.push({[cateid]: ''});
有关规范的详细信息,请参阅this section。否则,您必须创建一个临时对象,然后将其推送:
var temp = {};
temp[cateid] = '';
seleusrv.push(temp);