我有一个jquery数据表,我从变更事件的下拉列表中填充。我在数据表中有两个复选框,我在复选框上运行onclick。但是在第一次点击时,jquery只有当我第二次点击它时才会触发jquery触发,也会在切换页面时发生。我为点击添加了.on(),因为我研究并看到动态控件可以工作那样。我是否还缺少一些能让点击功能在第一次点击时工作的东西?以下是我的一些代码。
data table click on check box control no jquery click event on first click
data table click on check box control on second click
$('#my-table').on('click', function () {
var i = -1;
$("input[id*='secondary']:checkbox").on("click", function () {
if ($(this).is(':checked')) {
i = selectedIds.indexOf($(this).val());
if (i === -1) {
selectedIds.push($(this).val());
}
CheckedSecondary(this);
}
else {
jQuery(this).closest("tr").css("background-color", "");
if (selectedIds.length > 0) {
i = selectedIds.indexOf($(this).val());
if (i != -1) {
selectedIds.splice(i, 1);
}
}
if (!primaryChecked)
$(this).closest('tr').find('input[type="checkbox"]').not(this).attr('disabled', false);
}
});
$("#my-table").find("input[id*='primary']:checkbox").on("click", function () {
if ($(this).is(':checked')) {
primaryChecked = true;
primaryID = this.value;
CheckedPrimary(this);
}
else {
primaryID = "";
primaryChecked = false;
$(this).closest('tr').find('input[type="checkbox"]').not(this).attr('disabled', false);
$('input:checkbox[id^="primary"]').each(function () {
if (!$(this).closest('tr').find('input[type="checkbox"]').is(':checked'))
$(this).attr('disabled', false);
});
jQuery(this).closest("tr").css("background-color", "");
}
});
});
答案 0 :(得分:0)
您将点击处理程序附加到另一个没有意义的点击处理程序中。
删除第一个单击处理程序:
$('#my-table').on('click', function () {
});
将点击处理程序附加到复选框,如下所示:
$('#my-table').on('click', "input[id*='secondary']:checkbox", function () {
});
和
$('#my-table').on('click', "input[id*='primary']:checkbox", function () {
});