javascript - 如何在多个动态元素上使用 Jquery .on() 方法?
问题描述
我正在尝试将 .on() 单击方法附加到我动态创建的元素。这些元素中的每个元素都有一个 Bootstrap 弹出框,它充当菜单,其中包含每个元素的选项。弹出框也是动态创建的。
为了使菜单正常工作,我为每个元素分配了一个唯一编号,当单击菜单中的一个选项时,提取该唯一编号作为匹配菜单及其与元素选项的一种方式。这样,当我单击“删除”选项时,它就知道要删除哪个元素。
但是,当我创建多个元素并尝试提取唯一编号时,我只得到第一个元素的编号。
HTML:
<div class="scenario-group" id="scenario-group-0">
<div class="scenario-list" id="scenario-list-0">Egypt</div>
<div style="display:none;" name="0" id="scenario-options-box-0" class="scenario-options-box" scn-box="0">
<button type="button" id="show-btn" class="scenario-option-btn btn-light" btn-box="0">Show</button>
<button type="button" id="rename-btn" class="scenario-option-btn btn-light" btn-box="0">Rename</button>
<button type="button" id="delete-btn" class="scenario-option-btn btn-light" btn-box="0">Delete</button>
</div>
<div>
<a tabindex="0" role="button" style="left:22px; top:2px;" name="0" class="scenario-btn" id="scenario-options-btn-0" scn-box-btn="0" data-toggle="popover" data-placement="left" data-trigger="focus" data-original-title="" title="">
<i style="color:#444444;" class="fas fa-caret-down" aria-hidden="true"></i>
</a>
</div>
<div class="scenario-group" id="scenario-group-1">
<div class="scenario-list" id="scenario-list-1">Nigeria</div>
<div style="display:none;" name="1" id="scenario-options-box-1" class="scenario-options-box" scn-box="1">
<button type="button" id="show-btn" class="scenario-option-btn btn-light" btn-box="1">Show</button>
<button type="button" id="rename-btn" class="scenario-option-btn btn-light" btn-box="1">Rename</button>
<button type="button" id="delete-btn" class="scenario-option-btn btn-light" btn-box="1">Delete</button>
</div>
<div>
<a tabindex="0" role="button" style="left:22px; top:2px;" name="1" class="scenario-btn" id="scenario-options-btn-1" scn-box-btn="1" data-toggle="popover" data-placement="left" data-trigger="focus" data-original-title="" title="">
<i style="color:#444444;" class="fas fa-caret-down" aria-hidden="true"></i>
</a>
</div>
查询:
$(document).on('click',".scenario-option-btn", function() {
var btnVal = $(this).text();
var btnID = $(this).attr("btn-box")
var scnID = $("#scenario-list-" + btnID + "").text();
})
btnVal 的返回值是正确的,但是 btnID 的值将始终返回 0,我正在努力寻找原因。
这是将事件处理程序分配给多个动态创建的元素的正确方法吗?
任何帮助,将不胜感激。谢谢!
解决方案
推荐阅读
- c++ - C++程序的输出
- visual-studio - 如何将svg文件添加到代码中?视觉工作室 2019?
- php - 无法使用 Amadeus live API 凭证的“Flight Create Orders”创建预订
- javascript - 保存对象键值的问题
- azure - 如何通过 FQDN 而不是 IP 地址访问 Azure 容器?
- angular - 如何在角度页面中映射 f1 键盘快捷键?
- java - 将 Spark org.apache.spark.sql.Row 转换为 POJO
- testing - 如何通过 https 使用证书测试客户端软件
- javascript - 如何在悬停时从左到右进行平滑的背景填充以及输入和提交
- android - 如何在 Firestore 中使用两个不同的集合计算总价