javascript - 为 ajax 内容和未来的 dom 更改设置事件侦听器
问题描述
我试图弄清楚如何设置一个事件侦听器,该侦听器将在使用 fetch 加载 ajax 内容后工作。我正在尝试使用纯 javascript而不是 jQuery 来完成这一切。
我知道使用 jQuery 我可以做这样的事情,这将适用于由 ajax 加载的内容。
$('body').on('click', '#myLink', function () {
// do stuff...
});
所以我的问题是,我怎样才能用普通的javascript做类似的事情?
在我的应用程序中,我有一个登录屏幕,显示没有设置会话或 cookie。用户登录后,javascript fetch 会加载一个主屏幕,并且该屏幕上有可点击的链接。到目前为止,我不得不为这些链接创建函数,事件侦听器在页面加载时以及在 fetch 命令之后触发。
这是我的应用程序中的一些代码,您可以看到我有一个在其他地方调用的 loadScreen 函数,然后在它工作后它调用 logoutFunction,这是因为在加载 ajax 内容之前不会显示注销链接. 但是,如果有人已经登录,则不会显示登录屏幕,而是会加载主页。因此,我在页面加载时触发了相同的注销功能。
function loadScreen(page){
fetch(page)
.then(function(res){return res.text()})
.then(function(data){
document.getElementById('mainWrap').innerHTML = data;
logoutFunction();
})
}
function logoutFunction(){
var logout = document.getElementById('logout');
if(logout){
logout.addEventListener('click',function(event){
event.preventDefault();
// do stuff..
});
}
}
logoutFunction();
总而言之,我试图摆脱 jQuery 并使用普通的 javascript 和 fetch 来做所有事情。这是我过去几天一直在研究的一个障碍。我已经看到有人提到突变观察者,但不确定这在我的情况下如何工作。我认为答案是某种方式与一个身体事件侦听器,然后触发这些其他事件侦听器。jQuery 是如何做到的?我真的很喜欢 jQuery 的优雅和简单,所以我希望有一个类似的方法来做到这一点。
解决方案
推荐阅读
- lotus-notes - 如何使用 IBM Notes 在本地 Web 浏览器中打开数据库
- c++ - 如何确定 std::ofstream 打开的文件的当前大小?
- c# - 测试动作结果
当 BadRequest() 返回时 - groovy - 在 SoapUI 中使用 Groovy 脚本从 xlsx 文件中读取值
- python - 将字节列表写入文件,但有些记录丢失了
- grails - 如何在 grails 3.3.8 中使用导航 API
- javascript - Javascript:如果对象未传递给函数,则忽略解构对象参数
- visual-studio-code - VS Code:按 Crtl - D 后区分大小写替换
- angularjs - Chrome 扩展(Angularjs)到 Gmail 附加组件(Appscript)
- c# - Azure Ad 无法使用 microsoft.systemForCrossDomainIdentityManagement nuget 包上的补丁更新用户