我能够动态创建组件,但Click事件不能在动态创建的按钮上工作.

以下是代码.

Html文件:

<div class="merge_sections"></div>
    <div style="text-align: center">
         <button type="button" class="btn btn--dark add_mer_sec" style="display: inline-flex;">
            <span style="font-weight:bolder; font-size:30px;">+</span>
            <span style="font-weight: bold">Add Merge Section</span>
         </button>
    </div>
</div>

JS文件:

$('.add_mer_sec').click(function () {
     var cur_ms_len = $('.merge_sections').children().length + 1;
     console.log('cur_ms_len --> ', cur_ms_len)
     $('.merge_sections').append(`<div id="merge_sec-${cur_ms_len}">
             <div class="blockmultitd">
                 <table class="selectfiletable" style="width: 100%; font-weight:500; font-size:15px">
                     <tr>
                         <td style="width: 25%">Select Product</td>
                         <td style="display: flex;">
                             <select class="form-control tanproduct_m" style="width:30%" disabled>
                             </select>
                             <div style="text-align: center; width: 75%">
                                 <button type="button" class="btn btn--dark rem_mer_sec-${cur_ms_len}" style="display: inline-flex;">
                                     <span style="font-weight:bolder; font-size:30px;">-</span>
                                     <span style="font-weight: bold">Remove Merge Section</span>
                                 </button>
                             </div>
                         </td>
                     </tr>
                 </table>
                 <textarea id="att_sel_pair_m-${cur_ms_len}" style="width: 100%; height: 150px; overflow:auto; display: none;"readonly></textarea>
             </div>
         </div>`);
}); // I am able to create components dynamically.

$(document).on('click', '[class^="rem_mer_sec-"]', function() {
        console.log('INNNNN'); //This is not working
});

请帮帮我,谢谢.

推荐答案

问题是因为您使用的是"属性开始于" Select 器.您的完整类字符串是"btn btn--dark rem_mer_sec-${cur_ms_len}",而不是以rem_mer_sec-开头.

要解决此问题,请使用应用于所有元素的common class来 Select 这些元素,而不是使用属性 Select 器,如下所示:

<button type="button" class="btn btn--dark rem_mer_sec rem_mer_sec-${cur_ms_len}" style="display: inline-flex;">
  <span style="font-weight: bolder; font-size: 30px;">-</span>
  <span style="font-weight: bold">Remove Merge Section</span>
</button>
$(document).on('click', '.rem_mer_sec', function() {
  console.log('INNNNN');
});

另外,我强烈建议您删除动态创建的类名.这是一种反模式,通常会产生比解决更多的问题.如果要将自定义元数据与HTML元素相关联,请改用data属性.

此外,您的HTML不应包含CSS样式规则.将它们放在外部的css样式表中.

Javascript相关问答推荐

我的glb文件没有加载到我的three.js文件中

将数据从strapi提取到next.js,但响应延迟API URL

使用JavaScript在ionic Web应用程序中更新.pane和.view的背景 colored颜色

如何最好地从TypScript中的enum获取值

Bootstrap动态选项卡在切换选项卡后保持活动状态,导致元素堆叠

将自定义排序应用于角形数字数组

如何粗体匹配的字母时输入搜索框使用javascript?

从Node JS将对象数组中的数据插入Postgres表

Prisma具有至少一个值的多对多关系

变量的值在Reaction组件中的Try-Catch语句之外丢失

当使用';字母而不是与';var#39;一起使用时,访问窗口为什么返回未定义的?

确保函数签名中的类型安全:匹配值

SPAN不会在点击时关闭模式,尽管它们可以发送日志(log)等

在JS中动态创建对象,并将其追加到HTML表中

为什么云存储中的文件不能公开使用?

如何修复错误&语法错误:不能在纯react 项目中JEST引发的模块&之外使用导入语句?

为什么NULL不能在构造函数的.Prototype中工作

react 路由DOM有条件地呈现元素

bootstrap S JS赢得了REACT中的函数/加载

使用onClick单击子元素时,使用交点观察器的关键帧动画意外运行