我有一个如下的复选框列表:
$('.check-user').click(function() {
var $this = $(this);
var user_id = $this.attr('value');
var brandContainer = $this.closest('.pop-state').siblings('.pop-brands');
brandContainer.html('<p style="margin: 10px !important;">Processing... </p>');
$.post('/user/usersBrands', { userId: user_id } , function(data) {
var brands = JSON.parse(data);
var container = $('<div class="pop-mission-co" />');
brands.forEach(function (brand, index) {
var isRegisteredToBrand = null;
if(brand.userId==null)
{
isRegisteredToBrand = false;
}
else{
isRegisteredToBrand = true;
}
container.append(buildBrand(brand.id, brand.name, isRegisteredToBrand, index));
});
function buildBrand(id, name, isActive, index) {
var isChecked = isActive ? 'checked="checked"' : ' ';
return $(
'<div class="pop-mission-to">' +
'<label>' +
'<input class="check-brand"' +
isChecked +
'type="checkbox"' +
'name=""' +
'value="' + id + '"' +
'data-id="' + index + '">'
+ name +
'</label>' +
'</div>'
);
}
brandContainer
.children('p').remove();
brandContainer
.html(container)
.find('.pop-mission-co').show();
});
brandContainer.on('change', '.check-brand', function() {
console.log($(this).attr("checked"));
});
});
复选框列表是在jQuery中的$ .post之后创建的,现在我需要在检查每个复选框时处理事件,如下所示:
brandContainer.on('change', '.check-brand', function() {
console.clear();
var checked = "";
if($(this).attr("checked"))
{
checked = "checked";
}
else
{
checked = "unchecked";
}
console.log(checked);
console.log($(this).val());
});
正如您所看到的,我使用委托事件处理程序检查复选框是否已被选中...当用户点击1复选框时,我应将其放入数组中,如下所示:
Array { "checked", "1" }
当用户点击另一个复选框时,阵列应该像这样更新:
Array { "checked", "1", "checked", "2" }
如果用户取消选中他已经选中的复选框,让我们说第二个值为2,则数组应该如下所示:
数组{&#34;已检查&#34;,&#34; 1&#34;,&#34;未经检查&#34;,&#34; 2&#34; }
这个过程还在继续......有人可以帮我解决这个问题吗?非常感谢 ! :)
答案 0 :(得分:1)
我认为这可能有用。
var checkbox_events = [];
brandContainer.on('change', '.check-brand', function() {
if($(this).is(':checked') {
checkbox_events[$(this).val()] = 'checked';
} else {
checkbox_events[$(this).val()] = 'unchecked';
}
});