jquery - 代码未在多选项卡 Bootstrap 4 模式中触发
问题描述
我在 Bootstrap 4 中有一个模式,其中有多个选项卡,每个选项卡都用表格格式化。数据从 ajax 调用添加到表中,并且在启动时不存在。我想单击 a 并使用背景颜色突出显示,但无法触发代码。提取的代码片段如下:
<head>
<style
td.highlight {
background-color:yellow;
}
</style>
</head>
<body>
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#getDetails">
Open modal
</button>
<!-- MODAL-->
<div class="modal fade" id="getDetails" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog roundbox shadow" role="document">
<div class="modal-content" style="background-color:white;font-size:.85rem;">
<div class="card" id="card2">
<table width="100%">
<tbody id="children">
<tr height="24"><td>Children:</td><td>(none)</td></tr>
<tbody>
</table>
</div>
<div style="margin:10px;">
<button type="button" class="btn btn-sm btn-danger" style="float:left;" data-dismiss="modal">Cancel</button>
<button type="button" class="btn btn-sm btn-success" style="float:right;" onclick="saveDetails();">Submit</button>
</div>
</div>
</div>
</div>
<script>
$(function(){
var code = '<tr height="24"><td>Children:</td><td class="kids" id="child0" data-id="2" data-gender="1"><span class="bname">SURNAME</span> John Ainsworth b.1945</td></tr>' + "\n"
+ '<tr height="24"><td></td><td class="kids" id="child1" data-id="1" data-gender="1"><span class="bname">SURNAME</span> David Neale b.1946</td></tr>' + "\n"
+ '<tr height="24"><td></td><td class="kids" id="child2" data-id="11" data-gender="1"><span class="bname">SURNAME</span> Phillip Robert b.1950</td></tr>' + "\n"
+ '<tr height="24"><td></td><td class="kids" id="child3" data-id="28" data-gender="0"><span class="bname">SURNAME</span> Margaret Lesley b.1951</td></tr>' + "\n";
$('#getDetails table tbody#children').html(code);
});
// TOGGLE HIGHLIGHT
$('td.kids').on("click", function(e) {
if ($(this).hasClass("highlight")) {
$(this).removeClass("highlight");
} else {
$(this).addClass("highlight");
}
});
</script>
</body>
“突出显示”代码未触发。我查看了以前对类似问题的答案并尝试了所有建议,但无法使其正常工作。
有什么建议么?
解决方案
这是因为您将元素动态添加到 dom - 因此您需要委托点击处理程序以应用突出显示类。
另外-您不需要条件逻辑来确定单击的元素是否具有类-只需使用toggleClass,如果该类不存在,它将添加该类,如果存在则将其删除。
$("body").on("click", "td.kids", function(e) {
$(this).toggleClass("highlight")
});
另外-不确定它是否只是您发布的片段-但是您的样式声明中有错字-您没有关闭样式标签。
...<style ... should be ...<style> ...
推荐阅读
- c++ - 为什么向后列表迭代不显示在列表头之前插入的节点?
- bash - 运行脚本时如何定义curl的输出文件夹
- r - 如何在 r 中定义一个函数来按周标记假期?
- intellij-idea - 寻找特定的 IntellJ API 主题
- python-3.x - 在 Google App Engine 上使用 flask_client 自动或手动刷新访问令牌
- apache-spark - 如何将 Spark Streaming 与 Kafka 连接起来
- vmware-player - VMWare 播放器未检测到 GParted live CD iso 文件
- java - XML - 使用 DOM 解析元数据属性
- spring-boot - 每次请求都需要用户名和密码的 Spring Security
- git - 为什么我的名字在 git 提交中出现两次?