动态加载后未调用Javascript函数
我有一个奇怪的问题,我希望有人能帮我解决 问题 当我通过.load()函数动态加载html时,如果加载的片段中的html的任何方面试图访问原始html页面中的javascript查询函数,那么它将不起作用。示例代码如下: HTML主页(Main.HTML) 下面是一系列行动: -Main.html页面加载 -用户单击加载片段超链接 -Javascript将相关片段动态加载到div中 -用户点击检查此超链接,什么都没有发生 我有什么遗漏或需要注意的吗 就好像Thymeleaf已经预先注册了所有可能的事件场景,不允许任何其他场景。 我能够让它工作的唯一方法是在片段中注入“checkvalue”javascript,正如您所同意的,这是一种糟糕的做法动态加载后未调用Javascript函数,javascript,spring,thymeleaf,Javascript,Spring,Thymeleaf,我有一个奇怪的问题,我希望有人能帮我解决 问题 当我通过.load()函数动态加载html时,如果加载的片段中的html的任何方面试图访问原始html页面中的javascript查询函数,那么它将不起作用。示例代码如下: HTML主页(Main.HTML) 下面是一系列行动: -Main.html页面加载 -用户单击加载片段超链接 -Javascript将相关片段动态加载到div中 -用户点击检查此超链接,什么都没有发生 我有什么遗漏或需要注意的吗 就好像Thymeleaf已经预先注册了所有可能
非常感谢您的帮助。您正在使用
checkvalue
类将单击事件侦听器应用于所有现有对象
$(".checkvalue").click(function ()
您更希望做的(使单击事件动态应用于所有现有和任何新添加的)是在dom树中的父级上设置一个事件(现有和所有将添加的父级)。在您的情况下,
body
标签可能是安全的赌注
以下内容应足够:
$('body').on('click', '.checkvalue', function() { ...
简单地说,代码将在body
元素而不是.checkvalue
对象上应用侦听器,并且每当单击带有.checkvalue
类的对象时(无论是动态加载还是静态加载),事件都将触发
编辑
我还建议您在javascript中,在确定jquery已加载之前不要使用它。
jquery库可以使用以下函数为您解决此问题:
$( document ).ready(function() {
// All jquery dependant code here.
});
片段是异步加载的吗?太棒了。我会给你买啤酒,因为这让我头疼(我在非常长时间的缺席后才回到javascript)。简单但非常重要的提示。谢谢你@Jite。
$(".checkvalue").click(function ()
$('body').on('click', '.checkvalue', function() { ...
$( document ).ready(function() {
// All jquery dependant code here.
});