ajax - 为啥 onclick 不适用于复选框

Posted

技术标签:

【中文标题】ajax - 为啥 onclick 不适用于复选框【英文标题】:ajax - Why onclick doesn't work with checkboxesajax - 为什么 onclick 不适用于复选框 【发布时间】:2022-01-24 03:40:59 【问题描述】:

我目前正在使用 ajax 通信创建表格和复选框。

创建后确认checkbox功能正常, 即使我在创建它时包含检查,onclick 功能也不会触发。

success:function(data)
    for (var key in data) 
        feature = data[key]
        head = feature[0].split(" ")
        tail = feature[1].split(" ")
        type = feature[2]
        name = feature[3]
        $('#pharmacophore_table').append("<tr>" + 
            "<td>" + name + "</td>" +
            "<td> <label><input type='checkbox' name='ligand_feature' onclick='show_ligand_feature(this, " + '"' + feature + '"' + ");' ></label>" + 
            "</tr>");

        $("input[name='ligand_feature']").attr( "checked", true);
          
,
error:function(data)
    alert(data.status)

我该如何解决这个问题?

【问题讨论】:

这些引文在我看来不正确。输入是否在 DOM 中正确呈现,所以 onclick 看起来就在那里? 创建后 onclick 功能正常。问题是onclick函数在创建并使用ajax函数检查时不起作用。 您是否期望设置checked时会调用onclick函数? 是的,我想在创建复选框的同时启用所有复选框。 好的,但仍然不清楚什么不起作用以及为什么。你能创建一个重现问题的演示吗?见minimal reproducible example 【参考方案1】:

我解决了。

只需添加点击事件

complete: function()
    var chck = document.getElementsByName('ligand_feature')
    for (var l=0; l<chck.length; l++)
        chck[l].click();
    

【讨论】:

以上是关于ajax - 为啥 onclick 不适用于复选框的主要内容,如果未能解决你的问题,请参考以下文章

为啥 onclick 事件不适用于 vue-router?

onClick() 事件适用于一个 div,但不适用于另一个。为啥?

为啥比较选中的属性不适用于检查至少一个复选框被选中?

数据表复选框不适用于ajax

为啥此 ajax 操作不适用于 requestScope?

Ajax 加载面板适用于 FF,但不适用于 Chrome。知道为啥吗?