我有三张桌子。它们都包含一些复选框。当选中第一个表中的复选框时,它会在第二个表中添加一些新的复选框。但是,当我检查第二个表中的复选框时,它什么也没发生。似乎复选框事件仅观察第一个表中的复选框。以下是我的js代码的一集。
function bindEvent4CheckboxArea() {
$('input[type=checkbox]').change(function() {
initController.initGlobalData(false);
$('input[type=checkbox]').each(function() {
if ($(this).is(':checked')) {
if ($(this).attr('id').indexOf('trade') >= 0) {
var tradeId = $(this).attr('id');
var tradeIdByInt = tradeId.substring(6);
globalVar.userSelectedTrade.push(tradeId);
if (tradeIdByInt < 100) {
globalVar.userSelectedFirstTrade.push(tradeIdByInt);
} else if (tradeIdByInt < 10000) {
globalVar.userSelectedSecondTrade.push(tradeIdByInt);
}
} else {
globalVar.userSelectedIndex.push($(this).attr('id'));
}
}
});
//add new checkbox into the second table
render.drawTradeInfoArea('#second_trade');
// add new checkbox into the third table
render.drawTradeInfoArea('#third_trade');
});
}
答案 0 :(得分:1)
如果正常工作,请尝试以下代码。由于某些复选框是动态生成的,因此您必须使用jQuery .on。如果您将我的代码与您的代码进行比较,那么您可以找到我已更改第二行代码。
function bindEvent4CheckboxArea() {
$( "body" ).on( "change", "input[type=checkbox]", function() {
initController.initGlobalData(false);
$('input[type=checkbox]').each(function() {
if ($(this).is(':checked')) {
if ($(this).attr('id').indexOf('trade') >= 0) {
var tradeId = $(this).attr('id');
var tradeIdByInt = tradeId.substring(6);
globalVar.userSelectedTrade.push(tradeId);
if (tradeIdByInt < 100) {
globalVar.userSelectedFirstTrade.push(tradeIdByInt);
} else if (tradeIdByInt < 10000) {
globalVar.userSelectedSecondTrade.push(tradeIdByInt);
}
} else {
globalVar.userSelectedIndex.push($(this).attr('id'));
}
}
});
//add new checkbox into the second table
render.drawTradeInfoArea('#second_trade');
// add new checkbox into the third table
render.drawTradeInfoArea('#third_trade');
});
}
如果有效,请试着告诉我。