javascript - 使用 jquery 或 javascript 将任何附加事件添加到 DOM 的事件侦听器
问题描述
我现在正在为图标使用 fontawesome。我已经创建了自己的图标(在 svg 中),现在我尝试像 fontawesome 一样使用它。
一切正常,我的图标位于 svg 格式的 json 文件中,并且在页面加载时,js 会将 svg 中的所有图标加载到适当的标签中。但这只会在页面加载时发生一次。如果我在身体上有一些动态添加的元素怎么办?我需要一个任何附加事件的侦听器来将每个图标读取到 DOM。
我可以这样做吗?fontawesome 是如何做到的?
这是我现在的做法:
var icons = [];
$(document).ready(function () {
getIcons();
});
function getIcons(){
$.ajax({
url:'/fileDown?param0=/icons.json',
success: function (data){
if(IsJsonString(data)){
icons = JSON.parse(data);
insertIcons();
}
}
});
}
function insertIcons(){
for (const icon of icons ) {
if(icon.svg !== ""){
$(`.hsh.${icon.iconClass}`).html(icon.svg);
}
}
}
我在想什么:
$("body").on("changed appendedTo", function () {
insertIcons();
});
一个基本的 fontawesome 图标的示例 html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
<script src="https://kit.fontawesome.com/a26f6e4ee4.js" crossorigin="anonymous"></script> <!-- init font awesome here -->
<title>Document</title>
</head>
<body>
<i class="fa fa-user"></i> <!-- user is there -->
<script>
$(document).ready(function () {
// plane icon will be there even after 5sec.
setTimeout(() => {
$("body").append(" <i class='fa fa-plane'></i> ");
}, 5000);
});
</script>
</body>
</html>
解决方案
推荐阅读
- javascript - 需要一种方法来获取字符串并查找和替换某些组件
- git - Github 在分叉后识别提交
- php - 登录表单。我不断收到“无效的登录信息”
- fortran - Fortran 字符(:),维度(:) 与字符,维度(:,:)
- python - 如何根据不同熊猫列中的值替换字符串
- javascript - 在 Vue 中从 Laravel 传递数组对象属性
- nginx - 使用 Lua 获取第二个 Set-Cookie 标头的内容
- python - 分类 ANN 停留在 60%
- javascript - 使用 XMLHttpRequest 在 JSON 存储 JSON 文件中编辑用户
- django - Django 管理员在尝试登录管理站点时调用 ```.save()``` 方法