我添加了一个类copyMe
的代码,如果至少有一个复选框被更改(选中/取消选中),也启用了切换按钮,这是该行为背后的代码:
// Enable button #btnAplicarNorma and add copyMe class when any of the checkbox changes
$('#resultadoNormaBody').on('change', 'input[type=checkbox]', function () {
var $my_checkbox = $(this);
var $my_tr = $my_checkbox.closest('tr');
if ($my_checkbox.prop('checked')) {
$my_tr.addClass('copyMe');
}
var $all_checkboxes = $my_checkbox.closest('tbody').find('input[type=checkbox]');
$all_checkboxes.each(function () {
if ($(this).prop('checked')) {
$('#btnAplicarNorma').prop('disabled', false);
return false;
}
$('#btnAplicarNorma').prop('disabled', true);
});
});
现在我尝试应用相同的行为,但这次是一个复选框,切换所有复选框,我做错了,因为我没有在{{上获得任何匹配元素集1}} var。这是我为此尝试的代码:
$all_checkboxes
我也试过改变这一行:
// Enable button #btnAplicarNorma and add copyMe class when #toggleCheckboxNorma changes
$('#resultadoNorma').on('change', '#toggleCheckboxNorma', function () {
var $my_checkbox = $(this);
var $all_checkboxes = $my_checkbox.closest('tbody').find('input[type=checkbox]');
console.log($my_checkbox);
console.log($all_checkboxes);
$all_checkboxes.each(function () {
if ($(this).prop('checked')) {
$(this).closest('tr').addClass('copyMe');
$('#btnAplicarNorma').prop('disabled', false);
return false;
}
$(this).closest('tr').removeClass('copyMe');
$('#btnAplicarNorma').prop('disabled', true);
});
});
到此:
var $all_checkboxes = $my_checkbox.closest('tbody').find('input[type=checkbox]');
但是我得到了相同的信息,所以我的想法就是当我更改var $all_checkboxes = $('#resultadoNorma').closest('tbody').find('input[type=checkbox]');
所有#toggleCheckboxNorma
应该获得课程tr
并且copyMe
应该启用时如果它&# 39;相反我应该回去删除课程并禁用按钮。这是一个带有代码示例的fiddle。小心,在小提琴中默认加载所有内容但在我的代码TR中是通过Ajax调用动态生成的,我做错了什么?
答案 0 :(得分:2)
我认为问题是你的函数marcarTodosCheck()
正在中断。在更改属性后添加.trigger("change")
,如下所示。这是你想要的结果吗?请参阅示例:http://jsfiddle.net/ot96p9mL/5/
function marcarTodosCheck(selChk, tableBody) {
$(selChk).on('click', function () {
var $toggle = $(this).is(':checked');
$(tableBody).find("input:checkbox").prop("checked", $toggle).trigger("change");
});
$(tableBody).find("input:checkbox").on('click', function () {
if (!$(this).is(':checked')) {
$(selChk).prop("checked", false).trigger("change");
} else if ($(tableBody).find("input:checkbox").length == $(tableBody).find("input:checkbox:checked").length) {
$(selChk).prop("checked", true).trigger("change");
}
});
}